如何修复我的ajax调用崩溃我的移动应用程序?

时间:2012-04-18 14:01:24

标签: javascript ruby-on-rails ajax html5 cordova

我目前正在使用phonegap编写带有HTML5和Zepto.js的移动应用程序。我们的服务器在rails上使用ruby。在Playbook(测试设备)上,应用程序在这一个屏幕上冻结了大约20%的时间。如果发生这种情况,它将不会响应,并且如果拖动页面将滚动(通常禁用的页面)。我们非常确定这是对我们服务器的ajax调用。这是电话:

    $.ajax({
        url: myurl+ajaxData+'&callback=?',
        dataType: 'json',
        async: true,
        callback: "callback",
        success: function(body) { 
            if (body.status === "successful"){
                successful();
            }
            else {
                var errstring = body.status + ": " + body.result
                console.log (errstring);
                alert(errstring);
            }
        },
        error: function(xhr, type) { 
            var errorstring = type + ": " + xhr.status + "\n" + xhr.statusText + "\n" + xhr.responseText;
            alert (errorstring);
            console.log (errorstring);
            storage.setItem("retrieved", "false");
        }
    })

有谁知道可能导致这种情况的原因?

1 个答案:

答案 0 :(得分:1)

我建议您通过设置正确的超时来更新您的代码,并使用错误功能来解决问题:

$.ajax({
    url: myurl+ajaxData+'&callback=?',
    dataType: 'json',
    async: true,
    error: function(jqXHR, strError){
        if(strError == 'timeout')
        {
          //do something. Try again perhaps?
        }
    },
    success: function(){
        //do something
    },
    timeout:3000
});

您可以通过访问error:function(jqXHR,textStatus,errorThrown)选项的textStatus参数来查看引发的错误类型。选项包括“超时”,“错误”,“中止”和“parsererror”。