gpt4 book ai didi

jQuery 加载不更新 Internet Explorer 中的文档

转载 作者:行者123 更新时间:2023-11-30 23:58:33 25 4
gpt4 key购买 nike

可怕的 IE 再次来袭。 :(

过去几天我一直在使用模式对话框为 Tiny MCE 开发图像选择和上传工具。在脚本中,多次使用 jQuery 的 load() 函数来加载外部 HTML 并将其插入指定的 div 元素中。

一切都很顺利,即使在 IE 中也是如此,直到大约半小时前,当我启动 IE 来检查更改时,所有的 load() 调用现在什么也不做。内容应出现在文档中的位置(已检查开发人员工具)有一个空 div。也没有报告任何错误。不过,我可以使用 html() 手动更新元素。

直到几个小时前,它在 IE 中一切正常......现在它什么也没做。我尝试过使用完整地址(没有那么幸运),清除了浏览器缓存并尝试从 load() 调用的 php 文档发送无缓存标题。这可能是某种缓存问题吗?

以下是许多类似调用中第一个的示例:

//Create the dialog.
if ($('#imgPropDialog').length == 0) {
$('body').append('<div id="imgPropDialog" class="jqmWindow"></div>');
$('#imgPropDialog').load('system/admin/ajax/image_properties.php');
}

imgPropDialog div 已正确添加并显示在 IE 中的文档中。但 image_properties.php 的内容永远不会出现。在 Chrome(大概还有除 IE 之外的所有其他浏览器)中运行良好。

在我开始删除所有更改之前有什么想法吗?谢谢

最佳答案

您可以通过将随机查询字符串添加到 URL 中来快速测试缓存是否是您的问题,如下所示:

$('#imgPropDialog').load('system/admin/ajax/image_properties.php?_=1234');

如果这使它起作用,那么缓存就是您的问题。 AJAX GET 请求(这就是 .load() 使用的)由 IE 缓存。如果您想停止基于每个请求的缓存,则需要使用 $.ajax(),将 cache 选项设置为 false。或者,您可以生成自己的随机查询字符串(无论如何,这都是 jQuery cache: false 选项所做的)。

或者,如果您想完全禁用 AJAX 缓存,请执行以下操作:

$.ajaxSetup ({
// Disable caching of AJAX responses */
cache: false
});

查看这个问题:Stop jQuery .load response from being cached

编辑

其他建议:尝试这样的事情,看看会发生什么

$.ajax({url: 'system/admin/ajax/image_properties.php', cache: false, success: function(data, textStatus) {
alert($(data).html());
}});

希望该警报能够告诉您返回了什么(如果有)信息。如果它没有弹出,要么请求因某种原因失败,要么 IE 以某种方式忽略了无缓存。

关于jQuery 加载不更新 Internet Explorer 中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640252/

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