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

时间:2012-09-25 08:43:07

标签: android jquery ajax cordova

我的应用程序使用捆绑在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曲线。

提前致谢,

1 个答案:

答案 0 :(得分:0)

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

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

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