【发布时间】: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