Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么ajax';获取';请求挂起iOS phonegap应用程序?_Javascript_Ios_Ajax_Cordova_Xmlhttprequest - Fatal编程技术网

Javascript 为什么ajax';获取';请求挂起iOS phonegap应用程序?

Javascript 为什么ajax';获取';请求挂起iOS phonegap应用程序?,javascript,ios,ajax,cordova,xmlhttprequest,Javascript,Ios,Ajax,Cordova,Xmlhttprequest,MyPhoneGap应用程序包括一个javascript工作流,用于填充web数据库(sqlite)。工作流由一系列同步执行的ajax“GET”请求组成(单个ajax请求是异步的,但是一个请求在前一个请求完成之前不会启动) 我观察到一个请求会断断续续地无限期地挂起(既不成功也不失败)。当我对ajax请求设置超时时,请求将超时。执行此操作时,XmlHttpRequest具有以下状态: status: 0 readyState: 0 statusText: 'timeout' 让我印象深刻的是,如

MyPhoneGap应用程序包括一个javascript工作流,用于填充web数据库(sqlite)。工作流由一系列同步执行的ajax“GET”请求组成(单个ajax请求是异步的,但是一个请求在前一个请求完成之前不会启动)

我观察到一个请求会断断续续地无限期地挂起(既不成功也不失败)。当我对ajax请求设置超时时,请求将超时。执行此操作时,
XmlHttpRequest
具有以下状态:

status: 0
readyState: 0
statusText: 'timeout'
让我印象深刻的是,如果我设置一个代理并通过fiddler观察网络流量,我会在60秒的超时时间内看到发出的请求和服务器返回的预期响应

更新:如果我通过监控开发人员iPad的网络流量,我会发现请求似乎没有得到响应。因此,似乎响应要么没有响应,要么被设备忽略

我无法在运行android的nexus 7或在我的工作站上运行chrome的nexus 7上重现此错误,这使我相信此问题特定于iOS(版本6.1.3)

以下是适用代码的简化示例:

function syncWebDatabase() {
    var sqlScript;

    return retrieveEntity('users', sqlScript )
        .then(function () {
            return retrieveEntity('accounts', sqlScript );
        })
        .then(function () {
            return retrieveEntity('orders', sqlScript );
        })
        .then(function () {
            return retrieveEntity('shipments', sqlScript );
        })
        .then(function () {
            return executeScript(sqlScript);
        });
}

function retrieveEntity(entityName, sqlScript) {
    return $.ajax({
             url: 'http://myrestfulservice/' + entityName,
             type: 'GET',
             dataType: 'json',
             timeout: 60000,
             error: function(jqXHR, textStatus, errorThrown) {
               //handle error condition
             }
           }).then(function (entites) {
               return generateInsertStatements(entities, sqlScript);
           })

}

function generateInsertStatements(entities, sqlScript) {
    //appends insert statement for each entity to sqlscript
}

function executeScript(sqlScript) {
    //executes sql script against web database
}

我希望您能解释我所观察到的情况,以及我的问题的解决方案,或者就如何进一步调查该问题发表意见。

可能相关:听起来很傻,但您是否已将该网站添加到白名单中?ajax GET参数的长度是多少?它不应超过8000个符号。