我正在开发phonegap/cordova 1.7.0.,我正在向服务器发送ajax请求。我需要设置超时,所以模拟它,我在服务器端包含一个 sleep(30),在客户端包含我的 js,我有一个 30000 的超时。
经过测试,我得出结论,Android完全忽略了检查超时,iOS无法完全进行ajax调用,但没有给出任何错误。
有人可以帮助我吗?是不是ajax超时在phonegap下不起作用,有没有另一种方法可以使用phonegap检查超时?这是 js 代码:
$.ajax({
url: url,
data: data,
type: 'GET',
dataType: data_type,
timeout:3000,
error: function(xhr, status, error){
$('body').trigger('network-error') // triggers standard network error
console.log('network-error')
console.log('request came back with the error '+error)
CallbackFail()
},
success: function(data){
// is called from aSuccessCallback in the return
console.log('success')
console.log(data)
}
})
编辑
我忘了提到一个要点,我不直接使用 jquery,而是使用 zepto。
首先,让自己轻松。安装 weinre http://people.apache.org/~pmuellr/weinre/,这将帮助您实时跟踪 ajax 请求;因此,您可以看到来自服务器的确切HTTP响应(如果有)。基本上,它具有与谷歌开发人员工具相同的界面。您将转到"网络"选项卡以跟踪您的ajax请求。
通常,在进行 ajax 调用时需要考虑几个重要的注意事项:
-
确保您向其发送 ajax 请求的服务器已列入白名单,否则您将无法向其发送任何 ajax 请求。(这是操作方法:http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html)
-
如果通过 HTTPS 发送 AJAX 请求,请确保服务器具有有效的证书;否则,除非您手动忽略 PhoneGap 中的无效证书,否则它将不起作用。iOS/android需要不同的步骤 - 如果是这种情况,我可以将您指向正确的堆栈溢出链接。
最后,只是想让您知道我正在我的phonegap项目中发送ajax请求,没有任何问题。超时按预期工作。
我继续使用zepto的github,似乎ajax超时已经成为一个问题已经有一段时间了:
https://github.com/madrobby/zepto/issues/search?q=ajax+timeout
关于这是否已经或正在趋向,几乎没有什么说法。如果有人使用与我相同的库,那么直接使用 jquery 可能是个好主意......