【问题标题】:How can I fix my ajax calls crashing my mobile application?如何修复使我的移动应用程序崩溃的 ajax 调用?
【发布时间】:2012-04-18 14:01:23
【问题描述】:

我目前正在使用 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");
        }
    })

有人知道是什么原因造成的吗?

【问题讨论】:

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


    【解决方案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”。

    【讨论】:

      猜你喜欢
      • 2023-01-27
      • 2021-02-10
      • 2019-03-11
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多