Javascript webview中的同步Ajax超时

Javascript webview中的同步Ajax超时,javascript,android,jquery,ajax,webview,Javascript,Android,Jquery,Ajax,Webview,从Andriod中的webview向跨域网站执行javascript同步ajax请求(GET)时,请求失败。 代码如下所示 var jqxhr = $.ajax({ url: url, cache: false, dataType: 'json', type: 'GET', async: false }) .done(function ( data ) { fnSuccess(JSON.stringify(data)); }); jqxh

从Andriod中的webview向跨域网站执行javascript同步ajax请求(GET)时,请求失败。 代码如下所示

  var jqxhr = $.ajax({
    url: url,
    cache: false,
    dataType: 'json',
    type: 'GET',
    async: false
  })
  .done(function ( data ) { fnSuccess(JSON.stringify(data)); });

  jqxhr.fail(function(jqXHR, textStatus, errorThrown) {
    alert("Failed with:"+textStatus+"--"+errorThrown+"--"+jqXHR.status+"--"+jqXHR.responseText);
  });
该网站应该以JSON格式向我返回数据,平均响应时间约为90秒。 网站的网址是这样的

当Ajax请求启动时,下面显示日志(adb logcat), E/WebUrlLoaderClient(924):第0次尝试的同步请求在10秒后超时,URL: E/WebUrlLoaderClient(924):第1次尝试的同步请求在10秒后超时,URL:。。。 E/WebUrlLoaderClient(924):第2次尝试的同步请求在10秒后超时,URL:

记录第3行之后,ajax请求将就绪状态更改为4,响应状态更改为0而不是200,响应文本也为null。这意味着它将在30秒后超时(每次重试3次,每次10秒)

我查看了来自Android开源的WebUrlLoaderClient.cpp,发现超时和重试次数分别固定为10和3

同样的请求在异步模式下工作正常


请让我知道我在这段代码中是否做错了什么,或者在响应时间超过30秒的情况下是否有其他方法来执行同步ajax调用。

恐怕您无法为同步ajax调用设置自定义超时。。。您必须进行异步,并将下一个调用放入.done和.fail ajax调用中


请参见此处:。

例如,使用邮递员,请求是否可以正常工作?我假设是这样,因为非异步工作正常。我不知道是什么原因造成的,因为它只是通过改变标志来工作。但我不推荐任何同步,任何同步(很少有例外)。只需使用回调并切换async.Ajax就可以了。Ajax永远不应该是同步的,为什么要同步呢?顺便说一句,你说不在安卓系统上工作,那么其他设备如台式机呢?并检查您的控制台是否存在错误,因为对url的请求是跨域请求,在桌面浏览器上不起作用(Firefox和Chrome上出现错误)。此Ajax请求作为andriod上webview中应用程序的一部分运行。我还没有检查ios中webview上这个Ajax调用的行为,但是一旦我测试它就会更新。看起来服务器不接受同步请求,jsonp???但是为什么要同步呢?试试这个super.setIntegerProperty(“loadUrlTimeoutValue”,60000);