PhoneGap/jQueryを使用してアプリケーションを作成していて、リモートサーバーからJSONデータを取得しています。私はjQueryのを使用する、2つ(おおよそ)同等の「getJSON」機能を作った標準のJavaScriptを使用して1、そして他ました:jQuery AJAXは、最初のリクエスト後にタイムアウトを要求します。
getJSON = function(url, callback) {
var request = new XMLHttpRequest();
request.open("GET", url, false);
request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
request.onreadystatechange = function() {
if (request.readyState != 4) {
return;
}
if (request.status == 200) {
callback(JSON.parse(request.responseText));
} else {
alert("Error: " + request.status);
}
}
request.send(null);
};
標準の機能、私がしたすべてのケースで正常に動作するように見える(おそらく無粋でも)試しました。ただし、jQueryバージョン:
jqGetJSON = function(url, callback) {
$.ajax(url, {
cache: false,
success: callback,
error: function(jqxhr, message) {
alert("AJAX error: " + message + ". Please retry.");
}
});
};
...一度しか動作しないようです。 2回目の呼び出しは決して戻らない
getJSON("http://example.com/blah/json", function(data) {
alert(JSON.stringify(data));
}); // this works multiple times
jqGetJSON("http://example.com/blah/json", function(data) {
alert(JSON.stringify(data);
}); // this succeeds
jqGetJSON("http://example.com/blah/json", function(data) {
alert(JSON.stringify(data);
}); // this times out
、およびjQueryのオプションに「タイムアウト」パラメータを追加すると、一貫誤差関数に別の要求が行われるたびに呼び出されます:私は両方のようにのように呼ばれます。私が見つけたどんな種類のコンソール出力もありません。他のURLへのさまざまなjQueryリクエストも機能します(たとえば、「検索」と「情報の取得」リクエストを別々にするなど)。ただし、もう一度やり直すだけで問題は解決します。
私はここで何かが分からないことを確信しています。多分もっとよく知っている人が、それが何であるかについていくつかの洞察を提供できるでしょうか?
ありがとうございます!
(私はjQueryの1.7.1でのPhoneGap 1.5を使用して、とAndroid 2.3.7を実行しているデバイス上でテストしています)