我编写了离线工作的 HTML/JS 应用程序 - 它放在 SD 卡上并使用默认的 4.1 Android 浏览器运行。
我正在使用 jQuery 在 Internet 上托管 Ajax 请求。因为我是从本地文件系统运行它,所以它显然是一个跨域请求。服务器具有基于标头操作的机制,可启用此类 CD 请求。一段令人不安的代码:
$.ajax({
type: "POST",
crossDomain: true,
data : formData,
cache: false,
url: "http://someurlwhichhandlescrossdomain.com",
success: function(data){
alert("hurrayy!");
},
error: function(xhr, ajaxOptions, thrownError) {
alert("bah :/");
alert(xhr.status);
alert(thrownError);
}
});
问题是错误函数总是被执行,尽管数据被正确发送并且服务器正确地注册了请求。xhr.status 始终为 0,并且 throwedError 为空。
同一段代码在桌面版 Chrome 上正常工作(警报“万岁”)。
目前我使用基于 的解决方法navigator.onLine
,如果值为 true,我假设数据已正确发送到服务器(因为我不需要从服务器读取任何内容)。但是,此解决方案很糟糕,因为如果连接正常,但服务器不正常,我将无法处理。
有任何想法吗?
谢谢,卡罗尔