【发布时间】:2010-09-29 10:26:33
【问题描述】:
我在 Firefox 错误控制台中遇到的这两个错误:
Error: Incorrect document format
Source file:
Row 1, column 45
Source code:
<div xmlns="http://www.w3.org/1999/xhtml"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Error: uncaught exception: [Exception... "An invalid or illegal string was specified" code: "12" nsresult: "0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)" location: "http://127.0.0.1/WebLibThirdParty/JavaScript//jquery.js Line: 112"]
我的 jquery 代码很简单:
$(document).ready(function() {
// when the #guest_details is clicked
$('#guest_details').click(function() {
var postedData = $('#guest-details-dialog-contents form').serialize();
var uri = '/';
$.ajax({
type: 'POST',
data: postedData,
url: uri,
success: function(data) {
// this works
alert(data);
// this doesn't work
alert($(data).html());
}
});
return false;
});
});
如您所见,有问题的行是:
alert($(data).html());
在 ajax 回调中。 PHP 脚本返回有效的 XHTML(作为 XML 服务),所以我对这个问题感到困惑。
编辑:
好的。问题是 AJAX 返回混乱的 XHTML。它将标签更改为 HTML:
<br /> becomes <br>
<input type="text" name="someInput" /> becomes <input type="text" name="someInput">
and so on
【问题讨论】:
-
好的,问题是 AJAX 返回混乱的 XHTML。它用
交换
等等。我该如何解决? -
这实际上是有效的 HTML,自闭合标签有一个可选的结束斜线
<br />和<br>都是有效的。 -
会不会是success函数数据参数还没有渲染为DOM所以
.html()方法没有意义?因为不知道服务器是怎么实现的,所以不知道HTTP响应的格式。从问题看来,它是一个 HTML 文档,它使数据成为string,所以alert(data)在另一个不工作的地方工作是有道理的。 -
问题在于 data 不是 dom 元素,所以不能像 dom 元素那样称呼它。
标签: javascript jquery