android - Ajax请求发送到服务器但返回状态码0

标签 android jquery ajax cordova

我的应用程序使用 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/

相关文章:

javascript - 使用 Ajax 从维基百科返回数据?

android - 错误 : Android Gradle Plugin: Cannot Access Publisher

android - ListView/CursorAdapter 动态生成列表标题

java - Libgdx,按钮 onclick 事件崩溃

javascript - 使用 for 循环重构长 if/else if 语句 - javascript

javascript - 在ajax请求中发送POST变量

java - 安卓。记录应用程序输出的替代方法

javascript - 我如何在不使用 JavaScript 的情况下使用 JQuery 库来重写它?

javascript - jquery 便签插件

jquery - 谷歌地图,geoxml3,AJAX调用前清除