我们有一个 JavaServlet 正在运行,它为我们提供所需的数据。问题是 Jquery 解释这些数据的方式。
信息通过响应编写器发送。(例如:消息)
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException {
String body = "";
for (Message msg : messages) {
body += "<div class=\"Message\" id=\"" + msg.getId() + "\">"
+ *inner information*
+ "</div>";
}
response.getWriter().write(body);
}
信息是通过 Ajax 请求获取的
$.ajax({
type: 'POST',
url: 'message.jsp',
data: { *Needed data* },
success: function(data) {
$('#element').append(data);
}
});
这有时有效,有时无效。所以我们在 chrome 中检查了控制台,让代码停在附加行。当发送多条消息时,成功函数中的“数据”被解释为一个大字符串,
"<div class="message" id="153" onclick="loadFullMessage(153)"></div>
<div class="message" id="154" onclick="loadFullMessage(154)"></div>
<div class="message" id="155" onclick="loadFullMessage(155)"></div>
<div class="message" id="156" onclick="loadFullMessage(156)"></div>
"
但是当仅发送 1 条消息/div 时,它会被解释为“#document”对象。
#document
<div class="message" id="174" onclick="loadFullMessage(174)">…</div>
可以在 chrome 控制台中看到该消息可用,但是在附加以下错误时遇到“未捕获错误:HIERARCHY_REQUEST_ERR:DOM 异常 3”。
数据如何总是被解释为字符串而不变成文档对象?