jquery不能在IE中使用ajax响应作为上下文

jquery不能在IE中使用ajax响应作为上下文,jquery,ajax,sharepoint,callback,Jquery,Ajax,Sharepoint,Callback,我的问题是,在ajax回调中,当我将查询的上下文设置为ajax调用返回的html时,它找不到任何元素 一些调查结果: 这个问题在Firefox中从未出现过 该问题仅在IE中以具有一定权限的用户身份登录SharePoint时才会出现,从而导致生成某些额外的html以促进管理功能。我得出的结论是,正是这个额外的html导致了这个问题 不幸的是,我无法控制生成的html,因为它是由SharePoint生成的 我已经隔离了这个问题,并创建了一个供您查看的程序。据我所知,您可能希望尝试“url语法中的选择

我的问题是,在ajax回调中,当我将查询的上下文设置为ajax调用返回的html时,它找不到任何元素

一些调查结果:

  • 这个问题在Firefox中从未出现过
  • 该问题仅在IE中以具有一定权限的用户身份登录SharePoint时才会出现,从而导致生成某些额外的html以促进管理功能。我得出的结论是,正是这个额外的html导致了这个问题
  • 不幸的是,我无法控制生成的html,因为它是由SharePoint生成的


    我已经隔离了这个问题,并创建了一个供您查看的程序。

    据我所知,您可能希望尝试“url语法中的选择器”来仅重新加载页面的特定部分

    $("#somediv").load(location.href + " #somediv");
    
    另外,添加一个随机参数以避免缓存问题:

    $("#somediv").load(location.href + "?r=" + Math.random() + " #somediv");
    

    我在firefox中看不到任何东西,这是因为 代码中的这一位是错误的:

    google.load("jquery", "1.2.6");          //ok
    google.setOnLoadCallback(function() {    //ok
       $(document).ready(function()          //not ok, can't be sure if will fire
          {  
             // great stuff here 
          }
       );
    });
    
    请参阅以获得澄清,当调用来自google的LoadCallback时,文档可能(实际上在firefox中)已经被读取


    如果您能纠正这一点,我们可以用firebug进一步研究它,看看脚本在哪里运行。

    问题在于jQuery如何实例化传递给它的html,可能缺少良好的跨浏览器字符串到dom解析技术(例如Mozilla上的CreateContexturalFragment)

    具体来说,jQuery的clean函数中有两个正则表达式必须修复:

    857: var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
    874: elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
    
    857:var match=/^$/.exec(elems[0]);
    874:elem=elem.replace(/(]*?)\/>/g,功能(全部,前面,标签){
    
    这两种方法都无法处理名称中带有冒号的标记

    修复方法:

    857: var match = /^<([\w:]+)\s*\/?>$/.exec(elems[0]);
    874: elem = elem.replace(/(<([\w:]+)[^>]*?)\/>/g, function(all, front, tag){
    
    857:var match=/^$/.exec(elems[0]);
    874:elem=elem.replace(/(]*?)\/>/g,功能(全部,前面,标签){
    
    @stereofrog,谢谢,但我只想提出1个ajax请求。如果我的页面上有10个这样的div,我不想调用load()10次,如果你明白我的意思的话。谢谢Alex,这是有用的信息。我删除了document ready处理程序,现在它确实找到了一个img元素。我现在需要拿出一个更好的例子来说明我的问题,因为这个例子现在没有我所描述的问题。我注意到我现在得到了预期的行为but仅当我匿名运行页面时-当我经过身份验证(基本身份验证)时,这就是它的奇怪行为!让我看看是否可以创建一个用户帐户供您登录,以便您了解我的意思。嗯。因此,我创建了一个新用户,但我现在发现,您是否经过身份验证并不重要,而是SharePoint中的权限级别。我所能想到的是,当我以作为管理员,它将包含某些html/javascript以方便管理界面。可能是页面上的某些内容使其无法查询还是其他原因?请在页面顶部重新阅读我的问题,因为在新发现后,我对其进行了显著的改述。这是一个修补(未整理)的问题jQuery js:这就解决了!哇,谢谢!不过如果有一个更不引人注目的修复,那就太酷了,这样我就不必在解决方案中附带修改过的jQuery库。你可以在将html字符串传递给jQuery之前对其进行预处理。效率很低,但它会起作用。我提交了一个bug:刚刚找到了一个解决问题的方法:更改将在即将到来的《晚间》和jQuery1.4中发布。感谢您发现这一点!酷!谢谢您的关注John:)