jQuery.html()函数仅在Internet Explorer中显示开发人员工具时有效
我有一个可以添加、编辑和删除项目的页面。这是由对服务器端代码的大量Ajax调用控制的,服务器端代码在后端更新这些项目的数据,成功后更新包含这些项目列表的DOM元素。它在我测试过的Chrome和Firefox版本中运行良好。然而,当我在IE11中测试它时,DOM元素的更新只有在我打开开发者工具栏时才起作用。首先,我使用的代码:jQuery.html()函数仅在Internet Explorer中显示开发人员工具时有效,jquery,ajax,internet-explorer,Jquery,Ajax,Internet Explorer,我有一个可以添加、编辑和删除项目的页面。这是由对服务器端代码的大量Ajax调用控制的,服务器端代码在后端更新这些项目的数据,成功后更新包含这些项目列表的DOM元素。它在我测试过的Chrome和Firefox版本中运行良好。然而,当我在IE11中测试它时,DOM元素的更新只有在我打开开发者工具栏时才起作用。首先,我使用的代码: function getItemList(){ $.ajax({ type: 'GET', url: 'aj
function getItemList(){
$.ajax({
type: 'GET',
url: 'ajax.cfc?method=getXtrasList&eventGUID=#session.activeUser.activeEvent#',
async: false,
success: function(results){
$('#div-items').empty().html(results);
},
error: function() {
alert('there is a problem');
}
});
};
它在页面加载时被调用,并且在向服务器端发送Ajax调用以添加或删除列表中的任何项目的任何函数成功时也被调用。”“Results”是Ajax调用中返回的HTML片段。我验证了回调成功并返回了预期结果。此函数在页面加载时工作,但不会更新从其他Ajax调用(例如为列表创建新项)成功调用时选择的DOM元素。我从代码页面顶部的指令
开始
我执行了以下操作以尝试对此进行故障排除:
指令应该可以工作,所以我有点困惑。其他关于类似问题的论坛讨论表明,在我的Ajax调用中将数据类型设置为“html”应该是可行的,因为IE通常很难推断正确的数据类型
那么,我在这里遗漏了什么呢?根据本文的建议,我发现了问题:。IE正在缓存页面加载时进行的Ajax调用的结果。虽然它没有解决这家伙的问题,但当我在检索项目列表的Ajax调用中添加属性“cache:false”时,它现在用最新的结果而不是缓存的结果更新DOM元素。在
成功方法中console.log(results)
显示了什么?您可能还有一些console.log
或其他代码,这些代码只在控制台打开时起作用,并且可能会在“开发人员工具”窗口未打开时使程序停止,但这可能是其他人一开始认为它可能是一个游离的console.log()引用,并且已经删除了所有这些代码。我返回并为提供项列表内容的函数添加了一个console.log()输出,一个用于输出delete函数使用的一个参数,以确保每个参数都在预期时触发。在页面加载时,getItemList()函数返回了我期望的HTML布局。当我单击其中一个项目的“删除”按钮时,我得到了预期的标识符,调用了getItemList()函数并返回了预期的HTML布局。当然,由于我在IE中打开了控制台,因此它按预期工作。我尝试过的另一个条件是:弹出一个模式窗口,让您知道添加或删除成功。它设置为在更新项目列表之前调用。我将该引用移动到getItemList()函数的调用之后。没有什么不同。非常感谢,我一直在努力找出我的问题是什么,为什么IE在ajax调用之后没有显示最新的数据。终于遇到了你的建议!!!
<!DOCTYPE html>
<meta http-equiv="x-ua-compatible" content="IE=EDGE">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="x-ua-compatible" content="IE=EDGE">