2012-08-10 97 views
3

我正在phonegap/cordova 1.7.0上工作。我正在向服务器发送ajax请求。 我需要设置一个超时以便模拟它我已经在服务器端包含一个睡眠(30),并且在客户端我的js的时间超出了30000.Phonegap 1.7.0 ajax超时不工作

经过测试,我断定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而是仄。

+0

好问题,我对这个问题也感兴趣。 – 2012-08-10 15:01:40

回答

2

首先,让自己变得简单。安装weinre http://people.apache.org/~pmuellr/weinre/,这将帮助您实时跟踪ajax请求;所以你可以看到来自服务器的确切的http响应(如果有的话)。基本上它具有与谷歌开发人员工具相同的界面。你会去“网络”选项卡来跟踪你的Ajax请求。

在一般情况下,有几个重要的注意事项,让AJAX调用时需要考虑:

  1. 确保服务器,您要发送您的AJAX请求,被列入白名单,否则您将无法向它发送任何ajax请求。 (以下是如何操作:http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html

  2. 如果您通过https发送ajax请求,请确保您的服务器具有有效的证书;否则它将无法工作,除非您手动忽略手机中的无效证书。 iOS/android需要不同的步骤 - 如果是这种情况,我可以将您指向正确的stackoverflow链接。

最后,只是想让你知道我在我的phonegap项目中发送ajax请求没有任何问题。超时正在按预期工作。

+0

1.我确信服务器已被列入白名单 2.我也确定它是注释https 你使用什么库在phonegap上使用ajax? 也许问题来自那里,谢谢你的答案...... – AKFourSeven 2012-08-16 16:27:25

+0

我也在使用jquery。你是否能够让你的Ajax请求工作?也可能是你的ajax错误回调中有一个javascript错误,这会使回调看起来不正常。这是weinre进入调试非常方便的地方! – Aki 2012-08-16 16:45:52

+0

我使用的zepto库是一个轻量级jquery兼容的js库。看起来超时已经成为该图书馆的一个问题...... – AKFourSeven 2012-08-17 07:23:22