gpt4 book ai didi

javascript - $.ajax (jQuery v1.9.1) 无法在 iPad 上运行

转载 作者:行者123 更新时间:2023-12-02 16:44:08 25 4
gpt4 key购买 nike

Ajax 不仅仅适用于 iPad

$.ajax({
url : 'http://www.othersite.com/GetUrl?Callback=?',
dataType : 'json',
contentType : 'application/json; charset=utf-8',
type : 'GET',
timeout : 5000,
cache : false,
crossDomain : true,
async : true,
data : { id : 100, noCache : new Date().getTime() },
beforeSend : function(XMLHttpRequest) { alert('Sended!'); },
complete : function(XMLHttpRequest, textStatus) { alert('Completed with status: ' + textStatus) },
success : function(data){ alert('Success with response:' + data.response ); },
error : function(xhr, textStatus, errorThrown){ alert('Error: ' + textStatus); }
});

iPad 上的提醒

Sended!
Completed with status: timeout;
Error: timeout

IE (7,8,9,10,11)、Firefox、Chrome、Opera、Safari 桌面版中的警报

Sended!
Completed with status: success
Success with response: http://www.google.com/

服务器应用程序(平均响应时间为 50 毫秒)

echo $_GET['Callback'].'('.json_encode(array('response' => 'http://www.google.com/')).')';

服务器响应 header

Access-Control-Allow-Origin: *
Cache-Control: no-cache
Connection: close
Content-Length: 152
Content-Type: application/json; charset=utf-8
Date: Tue, 02 Dec 2014 09:52:46 GMT
Pragma: no-cache

服务器响应正文

jQuery19109435868220625793_1417512417785({"response": "http://www.google.com/"})

服务器日志中存在来自 iPad 的请求,但显示的是来自其他浏览器的所有请求。

为什么会发生这种情况?

最佳答案

Safari 会忽略同步 AJAX 调用中的超时设置。如果您的页面在 10 秒内没有收到服务器的响应,则会收到 NETWORK_ERR 错误。

尝试在 ajax 调用中添加特定的 timeout 属性

timeout: 240000

更新

似乎无法更改 10 秒的最大超时时间,因为 Safari 认为较长的等待时间对用户来说“不好”。您可以异步调用并使用 promise模拟同步

关于javascript - $.ajax (jQuery v1.9.1) 无法在 iPad 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com