1
好的,在MyServlet.java
如何在Javascript客戶端解碼XML消息(從Servlet響應)?
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String chat=req.getParameter("chat");
String last=req.getParameter("last");
//String text="<message>data here</message>";--> does not work because it contains <message>
String text="....";
resp.setContentType("text/xml");
String xml="<?xml version=\"1.0\" ?><root>"+
"<message id=\"0\">"+
"<user>1</user>" +
"<text>"+ text + "</text>"+
"<time>10:30</time>"+
"</message>"+
"</root>";
resp.getWriter().println(xml);
}
在ajaxchat.html
//Function for handling the return of chat text
function handleReceiveChat() {
if (receiveReq.readyState == 4) {
var chat_div = document.getElementById('div_chat');
var xmldoc = receiveReq.responseXML;
var message_nodes = xmldoc.getElementsByTagName("message");
var n_messages = message_nodes.length
for (i = 0; i < n_messages; i++) {
var user_node = message_nodes[i].getElementsByTagName("user");
var text_node = message_nodes[i].getElementsByTagName("text");
var time_node = message_nodes[i].getElementsByTagName("time");
chat_div.innerHTML += user_node[0].firstChild.nodeValue + ' ';
chat_div.innerHTML += '<font class="chat_time">' + time_node[0].firstChild.nodeValue + '</font><br />';
chat_div.innerHTML += text_node[0].firstChild.nodeValue + '<br />';
chat_div.scrollTop = chat_div.scrollHeight;
lastMessage = (message_nodes[i].getAttribute('id'));
}
mTimer = setTimeout('getChatText();',2000); //Refresh our chat in 2 seconds
}
}
的2上面的代碼很好地工作。但是,我遇到了一個嚴重的問題。也就是說,如果用戶發送的郵件中包含類似於「<message>
」,「</message>
」,「<user>
」,「</user>
」等標籤的文字,則不起作用。
所以我的問題是:
如何在JavaScript客戶端解碼XML消息(即從Servlet的responsed)?
但它有另一個問題,當用戶輸入「**文本 **」時,那麼消息應該是「** 文本 **」。但是,它只顯示「**文本**」 –
Tom
您是否使用過我的解決方案? – chandil03
我做了&我看不到「」 –
Tom