我目前正在使用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");
}
})
有谁知道可能导致这种情况的原因?
答案 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”。