我正在使用從遠程服務器獲取JSON數據的PhoneGap/jQuery編寫應用程序。我做了兩(約)相當於「的getJSON」功能,使用一個標準的JavaScript,另一個用的jQuery:第一次請求後,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.");
}
});
};
...似乎只工作一次。我打電話都像這樣:
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請求也可以工作(例如單獨的「搜索」和「獲取信息」請求),但是隻會再次發生一次,重新啓動應用程序可以解決問題。
我敢肯定,我在這裏錯過了一些明顯的東西,也許有人更熟悉可以提供一些有關它是什麼的見解?
在此先感謝!
(我用的PhoneGap 1.5使用jQuery 1.7.1,並運行Android 2.3.7測試設備)