我一直致力于Android移动应用程序,这是一个使用HTML5,javascript,jQuery和PhoenGap开发的基于跨平台浏览器的应用程序。
应用程序是基于客户端 - 服务器的,我们经常进行异步Web服务调用以从服务器获取数据。在这种情况下,我们在获取涉及大量数据的数据时遇到问题。在这种情况下,有很多数据库查询将在后台运行以获取数据。
我们正在使用2G连接测试应用程序,这导致在几分钟后出现状态0错误消息。
我的问题是,移动浏览器是否可以选择在收到回复之前几分钟后中止网络服务?
我们正在进行ajax调用以获取数据。示例代码供您参考。我们已经测试了各种超时选项,但没有积极的结果。同样在3G网络上运行良好。
$.ajax({
type: "POST",
url: wsUrl,
contentType: "text/xml",
dataType: "xml",
data: soapRequest,
async: true,
timeout:300000,
tryCount:0,
retryLimit:3,
success: processSuccess,
error: processError
});
答案 0 :(得分:0)
$.ajax({
url: syncURL,
data: {},
dataType:"jsonp",
timeout: 10000,
jsonpCallback: 'jsonpxchange',
success:function (data) {
console.log("OK!!");
},
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('No network');
} else if (jqXHR.status == 404) {
alert('Not fount [Error: 400].');
} else if (jqXHR.status == 500) {
alert('[Error: 500].');
}
if (exception === 'parsererror') {
alert('parser error');
} else if (exception === 'timeout') {
alert('timeout');
} else if (exception === 'abort') {
alert('abort');
} else {
alert('Undefined');
}
}
});
如您所见,我使用timeout
(在msecs中),例如10secs
。然后拍摄exception===timeout