Phonegap 1.7.0 ajax 超时不起作用



我正在开发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 调用时需要考虑几个重要的注意事项:

  1. 确保您向其发送 ajax 请求的服务器已列入白名单,否则您将无法向其发送任何 ajax 请求。(这是操作方法:http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html)

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

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

我继续使用zepto的github,似乎ajax超时已经成为一个问题已经有一段时间了:

https://github.com/madrobby/zepto/issues/search?q=ajax+timeout

关于这是否已经或正在趋向,几乎没有什么说法。如果有人使用与我相同的库,那么直接使用 jquery 可能是个好主意......

相关内容

  • 没有找到相关文章

最新更新