jQuery.html()函数仅在Internet Explorer中显示开发人员工具时有效

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

我有一个可以添加、编辑和删除项目的页面。这是由对服务器端代码的大量Ajax调用控制的,服务器端代码在后端更新这些项目的数据,成功后更新包含这些项目列表的DOM元素。它在我测试过的Chrome和Firefox版本中运行良好。然而,当我在IE11中测试它时,DOM元素的更新只有在我打开开发者工具栏时才起作用。首先,我使用的代码:

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元素。我从代码页面顶部的指令
开始

我执行了以下操作以尝试对此进行故障排除:

  • 删除了所有控制台引用
  • 使用了以下指令和标记(第二组是我在另一个项目中用于解决jQuery和IE9以及更早版本的类似问题的指令和标记):

    
    
  • 尝试在上述函数中使用.html(results)和.empty().append(results)代替.empty().html(results)

  • 将数据类型设置为“html”,并尝试使用“json”、“jsonp”和“string”
  • Set async:true。我最初将其设置为false,以防止在更新列表之前进行任何进一步的交互
  • 在成功调用的SIAF中放置警报()。我在选择器之前和之后添加了它,并确保它没有挂起在.html()函数上
  • 将SIAF中的代码包装在一个try/catch块中,如果引发异常,则使用alert()
  • 我确信,如果我打开开发者工具栏,它在IE中可以工作,这是一个兼容性问题,并且已经浏览了MSDN站点的论坛和文档,这些都告诉我
    指令应该可以工作,所以我有点困惑。其他关于类似问题的论坛讨论表明,在我的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">