1

現在、phonegapアプリケーションでこのコードを使用しています

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","http://192.168.1.19:8080/searchMobile?categoryRequest=true", true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {alert(xmlhttp.status);
if (xmlhttp.readyState == 4) {
    var responseObject = eval("(" + xmlhttp.responseText + ")");
    var results = responseObject.result;
    if (results != null)
    {
        var resLength = results.length;
        category.length = category.length + resLength;
        for ( var i = 0; i < resLength; i++)
        {
            category.options[category.length - (resLength - i)].innerHTML = results[i].categoryName;
            $(category).selectmenu("refresh");
      }
    }
}

このコードは Android で動作していますが、iPhone でこのコードを実行すると、ステータス 0 が表示されて動作しません。どうすればこの問題を克服できますか。

4

2 に答える 2

1

最初に@Raymond Camdenが言ったように、あなたのURLが.plist にホワイトリストされていることを確認してください。次に、file:// プロトコルから AJAX を実行しているときにステータスが 0 になるのはまったく正常なことです。Webkit はステータスを 0 に設定します。これは、クロス ドメイン リクエストを実行しているためです。これは、Web ブラウザーではブロックされますが、PhoneGap が使用するような Web ビューでは完全に問題ありません。したがって、この場合は 0 == 200 です。3 番目に eval を取り除きます。JSON データを返す場合は、はるかに安全なJSON.parse(xmlhttp.responseText) を使用します。

于 2012-06-28T14:07:33.027 に答える
0

URL をホワイトリストに追加してみてください。

于 2012-06-28T13:20:50.243 に答える