javascript - jQuery Ajax 不在 Safari 上发布
问题描述
我正在开发一个项目,其中在 jQuery AJAX 请求之后确定了 DOM 的一部分。该代码在 Google Chrome、Mozilla Firefox 甚至 Edge 中运行良好。所有(据我所见)现代版本的 Safari 都会出现这个问题。
似乎该请求根本没有在 Safari 上完成 - 但它没有引发任何错误,因此页面上的其他 JavaScript(不涉及 POST/GET 请求)按预期工作。控制台也没有任何错误。
下面是我用来发出其中一个请求的代码:
$(document).ready(function(){
$.ajax({
type: 'POST',
url: '/include/userbar.php',
async: false,
}).done(function(data){
if(data.replace('Invalid Permissions') == data){
$('#userBarContain').html(data);
} else {
$.ajax({
type: 'POST',
url: '/include/guestbar.php',
async: false
}).done(function(data){
$('#userBarContain').html(data);
});
}
});
基本上,我们会执行 AJAX 请求$(document).ready()
,如果返回的数据是Invalid Permissions
错误的,我们会针对guestbar.php
. 无论我们发布到哪里,我们都会将返回的数据放入$('#userBarContain')
DOM 元素中。
在 Safari 中,我没有看到成功或后备数据被插入到 DOM 中。我读到 Safari 并不总是能很好地处理async
请求,但即使async: false
我看到了同样的问题。
编辑:在访问现代 Macbook 后,我发现它实际上是我在其他地方使用的 CSS3 选择器导致了这个问题(控制台中没有错误,除非我再次手动调用该函数)。我想为将来可能遇到此问题的 Google 搜索更新此内容。
有问题的选择器是$('*[name^="option["')
. 显然,Safari 不能很好地使用这种选择器。在将一个类附加到我需要迭代的对象之后,问题似乎已经解决。
解决方案
推荐阅读
- python - 在 C++ 中从 python 调用函数
- c - 我正在学习数据结构并坚持使用 c 中的链表实现队列
- java - 尽管使用了when和thenReturn,但模拟存储库函数会导致空指针异常
- c++ - 我一直试图从编译器那里得到对这两个结果的解释,使用标准中的引号,但到目前为止无济于事
- angular - 错误 TS2304:找不到名称“_ZonePrivate”
- python - 无法使用 Chrome 扩展在 Python Selenium 中找到元素
- r - 冒号运算符的异常行为:在 R 中
- featherlight.js - 段落文本未出现在 Featherlight 灯箱中
- javascript - 并发 JavaScript 中的顺序日志记录
- python - 如何使用 Python 将文件夹中的所有 csv 文件连接起来?