問題是,你的phonegap應用程序正在請求一個非web服務器的本地文件。本地文件與NO HTTP HEADERS一起交付 - 這意味着沒有「200 OK」標題,也沒有「404 Not Found」錯誤。因此,狀態碼被假定爲0.
Straight javascript XHR將需要忽略狀態並在readystate == 4(已完成並準備就緒)上執行您的操作。就像這樣:
var myrequest = new XMLHttpRequest();
myrequest.open('GET','localfile.html');
myrequest.onreadystatechange = function(){
if(myrequest.readyState == 4) {
var result = myrequest.responseText;
}
}
myrequest.send();
在MooTools的,它在Request類實現改變狀態測試的相對簡單的任務 - 改變返回碼測試真也接受0。就像這樣:
Request.implement({
isSuccess: function(){
var status = this.status;
return ((status >= 200 && status < 300) || status === 0);
}
});
jQuery的....我有一些事情,我想談談jQuery的 - 但我會堅持我的舌頭,因爲這似乎是一個優雅的地方。
要爲狀態== 0準備jQuery,您需要使用always事件而不是成功事件,您可以在那裏測試狀態代碼。
$.ajax({
url: '/echo/html/',
type: 'PUT',
data: "[email protected]"
}).always(function(data, textStatus, jqXHR){
switch(textStatus) {
case 200:
case 0:
alert('Success.');
break;
case 404:
alert('oops');
break;
}
});
Ajax in Cordova/Phonegap - Yay!
讓我試試。如果這適用於我的mootools項目,我會給你100賞金 –