0

我目前正在使用 phonegap 使用 HTML5 和 Zepto.js 编写移动应用程序。我们的服务器正在使用 ruby​​ on rails。在 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");
        }
    })

有谁知道这可能是什么原因造成的?

4

1 回答 1

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
});

您可以通过访问错误的 textStatus 参数来查看引发了什么类型的错误:function(jqXHR, textStatus, errorThrown) 选项。选项是“timeout”、“error”、“abort”和“parsererror”。

于 2012-04-20T11:11:37.687 回答