移动客户端浏览器在某些超时后中止ajax调用

时间:2012-12-05 12:07:34

标签: jquery cordova jquery-mobile

我一直致力于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
    });

1 个答案:

答案 0 :(得分:0)

是的,您可以在ajax调用中使用超时。 例如:

  $.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