必要なデータを提供する 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 コンソールで確認できますが、追加すると「Uncaught Error: HIERARCHY_REQUEST_ERR: DOM Exception 3」というエラーが発生します。
データを常に文字列として解釈し、ドキュメント オブジェクトに変換しないようにするにはどうすればよいでしょうか?