jQuery.load()XHTML问题

jQuery.load()XHTML问题,jquery,xhtml,load,Jquery,Xhtml,Load,我在通过jQuery从另一个XHTML页面加载内容时遇到了一些奇怪的问题。当我尝试从中加载的第二个页面被用作XHTML时,我得到以下错误。我不知道这是否有帮助,但当我得到错误时,两个文档都会验证 未捕获错误: 不允许修改错误:DOM 例外7 当前,我从中加载的第二页上的标题为: <?xml version="1.0" encoding="iso-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http:

我在通过jQuery从另一个XHTML页面加载内容时遇到了一些奇怪的问题。当我尝试从中加载的第二个页面被用作XHTML时,我得到以下错误。我不知道这是否有帮助,但当我得到错误时,两个文档都会验证

未捕获错误: 不允许修改错误:DOM 例外7

当前,我从中加载的第二页上的标题为:

<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name="language" content="en" />  
 <title>some title</title>
 <!-- CSS & Javascript included here -->
</head>

我很好奇,为什么只有当我从中加载的第二个页面是XHTML时,这个过程才起作用。我不想把这个页面当作简单的HTML来使用,我正在寻找关于我做错了什么的建议。这两页都是有效的,我真的抓狂了。非常感谢

我认为这与document.write不能与XHTML严格兼容有关:


我不久前遇到了同样的问题,我认为这是因为jquery获取了它得到的(X)HTML,将其插入到一个虚拟div中,然后才运行选择器(在您的例子中是op)来检索正确的部分并将其插入到最终位置。以下是相关的jquery代码(取自1.5.1,但1.6看起来完全相同):

jQuery(“”)
//在中插入文档内容,删除脚本
//避免IE中出现任何“权限被拒绝”错误
.append(responseText.replace(rscript,“”)
//找到指定的元素
.查找(选择器)

在Firebug中,我可以看到它在.append行出错,因为它不支持
XHTML不支持document.write或innerHTML。由于jQuery使用其中一种方法插入新代码,所有与XHTML兼容的浏览器都会出错

XHTML with application/XHTML+xml不支持使用以下任何jQuery方法对源代码进行原始修改:append()、html()、insert…()等


相反,查询一些JSON数据并使用.text()/.val()将AJAX接收到的值插入预定义的标记中,或者使用document.createElement('someTag')动态创建这些节点。

@Urfe您在哪个浏览器中得到错误?我发布的错误来自Chrome。Firefox也失败了。Firebug给了我一个很长的错误,开始是:“uncaughtexception:[exception…”组件返回了失败代码:0x80004003(NS_error_INVALID_指针)[nsIDOMNSHTMLElement.innerHTML]“Hmmm…”根据我找到的一些页面()此错误与错误标记有关。这让我感到困惑,因为我测试这两个页面时都通过了验证。:(当我删除
$('#overpage').find(".wrap").load(this.getTrigger().attr("href")+" #op").show();
jQuery("<div>")
    // inject the contents of the document in, removing the scripts
    // to avoid any 'Permission Denied' errors in IE
    .append(responseText.replace(rscript, ""))

    // Locate the specified elements
    .find(selector)