2

我的应用程序使用捆绑在 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 工程而不是电话间隙为黑莓捆绑应用程序时,也会存在同样的问题。在 Android 2.3.3 和 Blackberry 9300 曲线上测试。

提前致谢,

4

1 回答 1

0

我建议将您的 $.getJSON 调用切换为完整的 $.ajax() 调用并将超时设置为更长的时间。这可能是由于您的网络服务需要很长时间才能回复。

如果这不起作用,您可能需要将您的应用服务器配置为等待回复,直到它有响应。状态码 0 表示“响应为空,(甚至没有返回标头)。这意味着连接已被接受,然后正常关闭(TCP FIN)。”

有很多事情可能会导致这种情况,在您的情况下很可能是超时,但防火墙也可能是罪魁祸首(不太可能,因为应用服务器正在处理其他请求)。

于 2012-09-25T22:15:04.063 回答