【问题标题】:Jquery loading page fragment using load() or ajax() not working on IE9 (compatability mode) on an aspx page使用 load() 或 ajax() 的 Jquery 加载页面片段在 aspx 页面上的 IE9(兼容模式)上不起作用
【发布时间】:2012-01-23 20:25:24
【问题描述】:

尝试在 aspx 页面上执行 load()ajax() 时遇到问题。我正在尝试仅加载一个片段,它在 IE9(普通)、FF 和 Chrome 中运行良好。

当我切换到兼容模式时,它找不到片段。 (返回null)。

我使用的代码用于一个链接,单击该链接将调用相同的页面,但只有不同的数据。 (使用另一个查询字符串值调用同一页面)

这是负载数据:

$("#gvHistory a").live("click", function () {
            var link = $(this);
            var linkHref = link.attr("href");
            if (linkHref.indexOf("detail") != -1) {
                dynamicDiv.hide(); //hide div then use load function
                dynamicDiv.load(linkHref + " #divDetails",
            {},
            function () {
                dynamicDiv.fadeIn("slow");
            });
                return false;
            }
        });

这没有任何作用,响应完成,我可以看到整个页面的 HTML,但它不会加载它...因此我尝试使用 ajax() 并提出了同样的问题。

代码如下:

function LoadProductSpecHistory(link,divToUse) {
    $panel = $('#' + divToUse);
    //Link variable contains the page and the querystring value
    $.ajax({
        url: "/ProductDevelopment/ProductSpecs/" + link,
        type: "GET",
        dataType: "html",
        async: false,
        data: {},
        success: function (obj, status, xhr) {
            // obj will contain the complete contents of the page requested
            // use jquery to extract just the html inside the tag
            $content = $('#divDetails', obj).html(); //THIS IS WHERE IS WON't WORK!!!!!
            // then update the div contents with this and show it
            $panel.html($content);
            $panel.show();
        }
    });
}

这会得到响应,但是当我执行 $content = $('#divDetails', obj).html(); 时,它在兼容模式(旧 IE)下返回 null,但在正常模式下它返回我需要的 HTML。

为什么会发生这种情况?我需要进行的任何更改才能使其在较旧的 IE(或兼容模式)上运行。

【问题讨论】:

  • 这已经修复了...哇,一个简单的标签可以做什么...所以我解决了这个问题,问题是有一个封闭的
    没有任何地方的开放 div。这是一个痛苦的发现,因为这是在主页面..看到视觉工作室提出的波浪线,所以它告诉我..把它拿出来再次检查,它起作用了。显然,较旧的 IE 版本对 xml 布局(或 xhtml)非常严格。所以,请确保所有打开的标签都有一个匹配的结束标签!...

标签: jquery internet-explorer-9


【解决方案1】:

试试这个;

$panel.html( $(obj).find('#divDetails').html() ).show();

【讨论】:

  • 嘿,感谢您的快速回答,但我之前确实尝试使用 find 方法作为另一种测试方法,但它没有用。当我在兼容模式下调试时,.find('#divDetails') = null。它不会在响应中找到它,但我看到它在那里。 :(
  • 问题是您没有将data 字符串值转换为jQuery 对象。 $(obj)。它如何在任何浏览器中仅使用 obj.find('#divDetails') 对我来说是个谜。
【解决方案2】:

已修复 哇,一个简单的标签能做什么......

所以我解决了这个问题,问题是在任何地方都有一个封闭的没有开放的 div。这是一个痛苦的发现,因为这是在主页面..看到视觉工作室提出的波浪线,所以它告诉我..把它拿出来再次检查,它起作用了。显然较旧的 IE 版本对 xml 布局(或 xhtml)非常严格。

所以,请确保所有打开的标签都有一个匹配的结束标签!...

使用 load() 方法工作。

感谢大家的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多