3

我正在开发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。

4

2 回答 2

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 请求,请确保您的服务器具有有效的证书;否则它将不起作用,除非您手动忽略 phonegap 中的无效证书。iOS/android 需要不同的步骤 - 如果是这种情况,我可以为您指出正确的 stackoverflow 链接。

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

于 2012-08-13T19:15:35.467 回答
0

我去了 zepto 的 github,似乎 ajax 超时一直是一个问题:

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

很少有人说这是否已经或正在被倾向于或不被倾向于。如果有人和我使用同一个库,直接使用 jquery 可能是个好主意......

于 2012-08-17T07:28:05.247 回答