问题是,你的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赏金 –