0

私はかなり基本的なことだと確信していることを理解するのに苦労しています。私はいたるところを検索しましたが、私の問題の解決策を見つけることができません。

私が見つけた最も関連性のあるスタックオーバーフローの質問はこれでした:Android用のPhonegapを使用してリモートAPIを呼び出すにはどうすればよいですか?

その投稿は有望に見えましたが、それでも私にはうまくいきません。最初のPhoneGapアプリを作成し、グループ化されたAPIを使用しようとしています。

PhoneGapとの間でデータを送受信する方法を概念的に理解していません。私はすべてをローカルで構築しているので、これは技術的にはPhoneGapに関連していないと思います。

これが私のAPI呼び出しです:

http://grouped.com/api?f=user_exists&email=ryan@ensomniac.com

戻る必要があります

{"msg": true}

しかし、ローカルでテストしたときに得られるのは、空のデータを含む「エラー200」だけです。私はこの男のように感じます:

http://www.youtube.com/watch?list=UU4_bwov47DseacR1-ttTdOg&feature=player_detailpage&v=GsqUZkmO-zk

Linux上のfirefox10.0.1内で「localhost」からテストしています。ローカルでの実行はPhoneGapに可能な限り似ていると思いますが、間違っている可能性があります。

これが私が今持っているコードで、動作するはずだと思います(しかし明らかに動作しません):

function makeRequest() {
    var request = new XMLHttpRequest();
    request.open("GET", "http://www.grouped.com/api?f=user_exists&email=ryan@ensomniac.com", true);
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            if (request.status == 200 || request.status == 0) {
                console.log(request);
            }
        }
    }
    request.send();
}
makeRequest();

私は何が間違っているのですか?

いつも助けてくれてありがとう。

4

4 に答える 4

2

問題は、FireFoxのファイルプロトコルからテストしていることです。FireFoxは、クロスサイトXMLHttpRequestであるため、リクエストが機能しないようにしています。FireFoxの一部のバージョンでは、クロスサイトXHRを有効にできますが、これは10.0.1では機能しないと確信しています。

ドメインからのリクエストを許可するようにサーバーを変更できる場合は、それが1つの解決策になります。

サーバーにアクセスできない場合は、開発にChromeを使用するように切り替える必要があります。Chromeを次のように起動した場合:

chrome.exe --disable-web-security

クロスサイトAJAXリクエストを実行できるようになります。また、ChromeはWebkitに基づいているため、Android、iOS、BBで見られる動作に近くなり、すべてWebkitベースのブラウザーがデプロイされます。

于 2012-05-22T13:05:49.170 に答える
0

走っただけ

http://www.grouped.com/api?f=user_exists&email=ryan@ensomniac.com

Webブラウザーを介して、正しいJSON応答を取得しました。ローカルホストで実際のWebとの通信に問題があるか、コード内の何かが応答を妨げている必要があります。ただし、エラーをチェックするためにコードを実際に調べたわけではありません。

于 2012-05-22T01:33:38.783 に答える
0

おそらくクロスドメインの制限に遭遇しました。どのプラットフォームで開発していますか?iOSでは、そのようなものを自分のCordova.plist:に追加する必要があるかもしれません。

<key>ExternalHosts</key>
<array>
    <key>grouped</key>
    <string>www.grouped.com</string>
</array>

Androidの場合はバグがあり、最善の策はjQueryとJSONPを使用することです。

于 2012-05-22T12:50:38.393 に答える
0

request.responseTextサーバーから応答本文を取得するために使用する必要があります。

于 2013-08-13T10:32:14.870 に答える