我正在使用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。
答案 0 :(得分:2)
首先,让自己轻松一点。安装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请求,请确保您的服务器具有有效的证书;除非您手动忽略手机中的无效证书,否则它将无法工作。 iOS / android需要不同的步骤 - 如果是这种情况,我可以指向正确的stackoverflow链接。
最后,我想告诉您我在我的phonegap项目中发送ajax请求没有任何问题。超时正在按预期工作。
答案 1 :(得分:0)
我继续使用zepto的github,似乎ajax超时已经存在了很长一段时间了:
https://github.com/madrobby/zepto/issues/search?q=ajax+timeout
关于这种情况是否已经倾向于或者是否正在倾向,几乎没有人说过。如果有人和我一样使用同一个库,那么直接使用jquery可能是个好主意......