使用Cordova 8.0.0,iOS 12.1.2尝试向我的服务器发出GET请求。
我可以成功地向服务器发出请求,但是如果由于任何原因花费的时间超过10秒钟,则它将失败。如果花费的时间少于该时间,它将起作用。
这仅对我来说适用于iOS,该应用的Android版本不显示此行为,并尊重我在下面设置的超时。
示例片段:
$.ajax({
type: "GET",
url: actionUrl,
data: data,
cache: false,
dataType: "xml",
timeout: 300000,
async: false,
beforeSend: function (request) {
request.setRequestHeader("user", settings.userId);
request.setRequestHeader("sid", settings.sessionKey);
},
success: function (results) {
callback(results);
},
error: function (e) {
if (!surpressError){
main.ajaxError(e);
}
main.stopLoading();
if (errorCallback){
errorCallback(e);
}
}
});
如果我做出async: true
或仅取出该请求,则该请求可能会花费10秒以上的时间才能完成,但是使用该旧版应用程序,我宁愿不必对其进行更多更改容纳开关。
我还尝试将<preference name="loadUrlTimeoutValue" value="300000" />
添加到config.xml中,并且超时少于1分钟(30000),但这无济于事。
还有其他方法可以确保超时时间超过我错过的10秒吗?
答案 0 :(得分:0)
我设法通过删除async: false
(感谢charlietfl)并执行以下操作来解决此问题:
$.ajax({
//as above
}).done(function(res) {
callback(res);
});
这允许请求继续,并且在经过其他超时测试之后,现在似乎也尊重该请求。我还需要在请求的接收端将一些显示代码移到回调内部。
参考:jQuery.ajax() method's async option deprecated, what now?