如何在 Javascript Client 中解码 XML 消息(从 Servlet 响应)
How to decode XML message (that is responsed from Servlet) in Javascript Client?
好的,在MyServlet.java
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响应(?
您需要在邮件中添加转义字符,因为它包含一些预定义的 xml 标记。
为此,请下载此库 unbescape ( HtmlEscape.escapeHtml4()
(。
这是修改后的代码:
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="....";
text = HtmlEscape.escapeHtml4(text); // add escape characters
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);
}
当您使用 javascript 在 Web 浏览器中收到此请求时,您无需删除转义字符。Html自己做。
希望对您有所帮助。
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 如果localstorage为空,则显示欢迎消息
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 当值更改时,在servlet中自动获取textarea值,无需单击按钮
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 离开页面时弹出消息
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 消息显示之外的淘汰验证
- 选项卡侦听器未被来自后台脚本的消息激活
- servlet中的请求对象,而不是从jsp接收参数值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- jQuery在输入下验证post错误消息
- Servlet仅在单击JavaScript警报消息后重定向
- 使用 servlet 在登录页面本身中显示密码错误消息
- 如何在 Javascript Client 中解码 XML 消息(从 Servlet 响应)
- JSP:登录页面向servlet传递登录页面消息
- 使用JSP和Servlet Java的消息提示
- 如何从servlet调用一个javascript函数,它是一个消息框函数
- 如何在servlet中给出警告消息并将其重定向到jsp页面
- 在javascript警告框中显示来自JSP页面上servlet的消息