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

Fou*_*ays 4 jquery internet-explorer load

可怕的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');
}
Run Code Online (Sandbox Code Playgroud)

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

在我开始删除所有更改之前的任何想法?谢谢

End*_*der 8

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

$('#imgPropDialog').load('system/admin/ajax/image_properties.php?_=1234');
Run Code Online (Sandbox Code Playgroud)

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

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

$.ajaxSetup ({
    // Disable caching of AJAX responses */
    cache: false
});
Run Code Online (Sandbox Code Playgroud)

看到这个问题:停止缓存jQuery .load响应

编辑

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

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

希望该警报会告诉您哪些(如果有的话)信息会回来.如果它没有弹出,请求以某种方式失败,或者IE以某种方式忽略无缓存.