我的应用程序使用 bundle 在 Android 应用程序中的phonegap 1.7.0 和 jquery 1.7.1。我的 html 包含多个 getJson() 调用,这些调用均成功运行,除了我提交表单时的一次调用。
$('#proposalForm1').submit(function(event){
var formInput = $(this).serialize();
$('#loader').show();
$.getJSON("http://xxx.xxx.xxx.xxx:8282/Service004/user/jsProposalPage1.action", formInput,function(data){
$('#loader').hide();
if(data.serviceErrorMsg == ""){
window.location.replace("proposalDisplay.html");
}
else{
alert(data.serviceErrorMsg);
}
}).error(function(xhr){
$('#loader').hide();
alert(xhr.status);
navigator.notification.alert(
'Please try again later!', // message
doNothing, // callback
'Server Unavailable', // title
'Exit' // buttonName
);
});
return false;
});
有时它会起作用,但大多数情况下它会返回错误代码 0。发出请求的应用服务器成功接收请求并调用 Web 服务。应用程序服务器已成功收到来自 Web 服务的响应,但 PhoneGap 应用程序报告状态代码 0。有人可以帮助我吗?当使用 Web 作品而不是电话间隙为黑莓 bundle 应用程序时,也存在同样的问题。在 Android 2.3.3 和 Blackberry 9300 曲线上进行测试。
提前致谢,
最佳答案
我建议将 $.getJSON 调用切换为完整的 $.ajax() 调用,并将超时设置为更长一些。这可能是因为您的网络服务回复时间太长。
如果这不起作用,您可能需要将应用服务器配置为等待回复,直到收到响应。状态代码 0 表示“响应为空(因为甚至没有返回 header )。这意味着连接已被接受,然后正常关闭 (TCP FIN)。”
有很多原因可能会导致这种情况,在您的情况下很可能是超时,但防火墙也可能是罪魁祸首(不太可能,因为应用服务器正在处理其他请求)。
关于android - Ajax请求发送到服务器但返回状态码0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579226/