在Servlet中返回xml格式的数据,用jQuery的html方法取值,alert出来的是'undefined', 请问这是什么原因, 谢谢
本帖最后由 showbo 于 2013-09-29 10:01:02 编辑
后台代码:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Validation extends HttpServlet {
private static final long serialVersionUID = 5873405129982361860L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 获取参数前, 需要设置编码
request.setCharacterEncoding("utf-8");
// 设置返回的格式为xml
// response.setContentType("text/xml;charset=utf-8");
// 设置禁止缓存
response.setHeader("Cache-Control", "no-cache, must-revalidate");
// 验证用户名是否已经存在
validate(request, response);
}
private void validate(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 设置返回的格式为xml
response.setContentType("text/xml;charset=utf-8");
PrintWriter out = response.getWriter();
String message = "";
String username = request.getParameter("username");
if("aaa".equals(username) || "bbb".equalsIgnoreCase(username)) {
System.out.println("已经存在");
message = "用户名" + username + "已存在!";
} else {
message = "恭喜, 用户名" + username + "可以注册!";
}
out.println(message);
}
}
============================== 郁闷的分隔线 =========================================
jsp代码:
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
处理返回值为xml格式// ajax引擎
var xmlHttpRequest;
// 创建ajax引擎
function getXMLHttpRequest() {
// 不同浏览器获取XMLHttpRequest对象方法不同
if(window.ActiveXObject) {
// IE
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else if(window.XMLHttpRequest) {
// 火狐, google等非IE
xmlHttpRequest = new XMLHttpRequest();
}
}
// 检查用户名是否已经存在(提交数据到后台)
function checkName() {
// 获得ajax引擎
getXMLHttpRequest();
// 判断ajax引擎是否创建成功
if(xmlHttpRequest) {
// 引擎创建成功, 执行下面代码
// 通过该引擎对象发送请求到服务器的某个页面
// post提交方式
var username = "username=" + $("#username").val();
var url = "${contextPath}/servlet/validation";
xmlHttpRequest.open("post", url, true);
xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// 指定回调方法, 处理返回值
// 状态改变了四次
xmlHttpRequest.onreadystatechange = deal;
// 真正发送请求
xmlHttpRequest.send(username);
}
}
// 回调方法, 处理返回值
function deal() {
// 我们只关心完成的那个状态
if(4 == xmlHttpRequest.readyState) {
if(200 == xmlHttpRequest.status) {
// 找到message标签(节点), 然后取出第一个节点元素
// 把DOM对象转换成jQuery对象
var message = $(xmlHttpRequest.responseXML.getElementsByTagName("message")[0]);
// 用html获取, 提示undefined!!!!
// var result = message.html();
var result = message.text();
$("#result").html(result);
}
}
}
// 页面装载完成后运行
$(function() {
$("#validate").click(function() {
checkName();
});
});
用户名: