在iPad上使用iOS 5野生动物园上最新版本的jQuery 1.6时,我注意到我所有的ajax调用都失败了。 这些相同的ajax调用可以在我尝试过的所有其他浏览器上正常运行,而且我很确定它们也可以在iOS 4的Safari版本上运行(尽管我可能错了)。 还有其他人也经历过这种行为吗? 如果是这样,是否有修复程序或解决方法? 下面是一个简单的jQuery AJAX调用的快速示例,该调用在iOS 5的Safari中返回错误。 预先感谢您的任何见解!
Click Me!
jQuery(document).ready(function() {
jQuery("#my-link").bind("click", function() {
jQuery.get("test.php", function(data) {
alert(data);
});
});
});
Safaris错误控制台返回以下信息……" XMLHttpRequest无法加载.com / test.php"> .com / test.php。 无法从null发出任何请求"
我还应该提到AJAX调用正在向同一域发出GET请求。
bugs.jquery.com/ticket/10529
在我的iPad(iOS5)上,这对我来说可以正常工作:jsfiddle.net/ambiguous/zWC3R,所以也许看看您是否可以更改此设置以匹配您所看到的内容,然后用一个测试用例踢一下jQuery人员。
我有仅在ios5(ipad)上会发生的相同问题。 显然这是一个错误:bugs.jquery.com/ticket/10529,我仍然在等待解决方案
我遇到了这个问题,但是在重新启动iPad后消失了……这可能是ios / safari错误,而不是jquery错误。
只是不重复帖子。 可能会有所帮助:stackoverflow.com/a/18514269/1872856
我刚才有一个类似的问题。我有
$.ajax({
type: 'post',
url: 'http://IP../ws',
data: {1:1},
dataType: 'json',
success: function(response) {
if (lng.Core.toType(callback) === 'function') {
// setTimeout(callback, 100, response);
callback(response);
}
},
error: function(xhr, type) {
console.log('error')
if (error) {
setTimeout(error, 100, result);
}
}
});
将网址:" http://IP../ws"更改为网址:" ws",
我根本不是jQuery用户,但必须在项目中使用它,因此不确定这是否对您有所帮助,但对我有用。
我同意戴提的观点。 我可以运行AJAX调用的唯一方法是使用相对路径而不是绝对路径。
是。 就是这样 死了。 应该标记为正确答案。
我不敢相信此问题已解决,我发誓相同的功能已经运行了一个多月,然后今天它停止运行回调函数-也许是由于安全性检查结果为假,因为它仍在Chrome和所有其他版本中运行 我的其他设备。 无论如何,我很高兴,谢谢!
为我工作,这应该标记为正确答案。
我遇到了一个问题,那就是Safari浏览器中的ipad中jQuery ajax调用失败。错误是您无权访问页面/目录。我通过将Ajax异步属性更改为true来解决此问题。
$.ajax({
type: 'GET',
url:"".
async: true,
cache: true,
crossDomain: false,
contentType:"application/json; charset=utf-8",
dataType: 'json',
error: function (jqXHR, err) {
console.log(jqXHR.responseText);
alert("Error" + jqXHR.responseText);
},
success: function (data, status) {
});
重新启动Safari-离开它并从正在运行的任务中将其杀死。
从其他方面来看,它与安全性上下文和跨站点脚本攻击的预防有关,并且Safari在以前运行在其他网络上并且现在在新网络上且未在更改之间停止的情况下无法正常运行网络。
今天,我自己使用纯HTML / JavaScript / PHP XMLHttpRequest请求运行它。
我遇到了同样的问题,但最终发现了完全不同的东西。
我有类似的东西:
function load_one(var1 = null, var2 = null) { ... }
function load_two() { ... }
之后,我有了
$(window).load(function() {
load_one(var_x, var_y);
load_two();
});
在Chrome,Firefox,OSX的Safari,iPhone的Safari,iPhone的Chrome,iPhone的Edge和Safari上,一切正常。因此,我在Edge上打开了它,并在开发人员工具内部将其定义load_one的行显示为错误。
我不确定是什么,但是错误提示) expected,所以我决定删除函数参数的默认值,然后所有操作突然起作用。我不确定javascript是否具有默认参数值的问题,但是显然某些浏览器与此有关。
我必须这样做,以便它最多可以重试20次错误才能使其正常工作。代码示例:
function my_original_function(form)
{
my_original_function_ajax(form, 1);
}
function my_original_function_ajax(form, attempts)
{
console.log('Attempts #'+(attempts));
jQuery.ajax({
type: 'POST',
url: form.action,
processData: false,
data: $(form).serialize(),
cache: false,
success: function(html){
console.log('success!!');
},
error: function (xhr, status, error) {
// make up to 20 attempts if error
if (attempts <= 20) {
my_original_function_ajax(form, attempts + 1);
}
}
});
}
Safari Mobile中存在一个错误,如果正在处理任何文件,该错误会突然并意外地给AJAX调用带来麻烦。在使用Content-Disposition: attachment;标头进行下载后,Safari可以开始发送" OPTIONS" http消息而不是POST。您可以使用Safari Mobile和服务器之间的Fiddler查看Safari正在发送的HTTP消息,以查看是否正在发生这种情况。
重启后,Safari Mobile中的"条件"将重置。
这里的Stackoverflow进行了很好的回顾:JQuery Ajax停止使用IOS 5.0.1。