2 u010791853 u010791853 于 2015.05.28 02:41 提问

servlet该如何返回值给AJAX呢? 1C

js代码
//声明XMLHttpRequest对象
var xmlrequest;

//初始化XMLHttpRequest
function createXMLHttpRequest(){
if(window.XMLHttpRequest){
xmlrequest = new XMLHttpRequest();
}else if(window.ActiveXObject){
try{
xmlrequest = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlrequest = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){

        }
    }
}

}

//定义回调函数
function processResponse(){
//响应完成
if(xmlrequest.readyState == 4){
//响应正常
if(xmlrequest.status == 200){
var head = xmlrequest.responseText;
alert(head);
}
}
}

//事件处理函数
function change(){
//初始化XMLHttpRequest对象
createXMLHttpRequest();

//设置请求的URI
var uri = "servlet/LoginServlet";

//打开与服务器响应地址的连接
xmlrequest.open("POST", uri, true);

//设置请求头
xmlrequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//设置处理响应的回调函数
xmlrequest.onreadystatechange = processResponse;
var account = document.form.account.value;
var password = document.form.password.value;
//发送请求
xmlrequest.send("account=" + account + "&password=" + password);

}

servlet代码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("post被触发了");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

    String account = request.getParameter("account");
    String password = request.getParameter("password");
    System.out.println(account);
    System.out.println(password);
    PrintWriter out = response.getWriter();
    out.print("124578");

}

配置文件
<?xml version="1.0" encoding="UTF-8"?>

shangGou

LoginServlet
servlet.LoginServlet


LoginServlet
/servlet/LoginServlet

请求页面:图片说明
响应后的页面:图片说明

请大神帮我解答解答,AJAX向服务器发送请求后,servlet要如何响应页面才不会刷新呢?

13个回答

yl2201
yl2201   2015.05.28 09:51
response.setContentType(type + ";charset=UTF-8");
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        PrintWriter writer = response.getWriter();
        writer.write(content);
        writer.flush();
peppengliu
peppengliu   2015.05.28 11:45

可以直接使用response.getOut()来write数据。ajax中success后function(value),value就是写出的内容。

bdmh
bdmh   Ds   Rxr 2015.05.28 04:59

你用jquery的ajax,有个success回调,返回数据就会触发

xy707707
xy707707   2015.05.28 08:26

你用jquery的ajax,有个success回调,返回数据就会触发

xy707707
xy707707   2015.05.28 08:37

关注着问题的解决 ,,,具有借鉴意义啊

showbo
showbo   Ds   Rxr 2015.05.28 08:48

你哪个控件触发的function change()事件,如果是放到表单中的submit按钮,要return false阻止表单的提交

 <input type="submit" onclick="change();return false"....../>
showbo
showbo 回复苦味_kuwei: type="button"还是<button 标签?<button 加了xhtml申明或者标准浏览器下也是submit按钮,你现在是直接跳转到到action去了是吧,要阻止表单提交
2 年多之前 回复
u010791853
u010791853 用的是button
2 年多之前 回复
sirnuo
sirnuo   2015.05.28 09:12

你的请求并没有走change() 方法,你加上日志试试。 表单会自动提交到action里,更新整个页面。 你可以阻止form的默认请求,或者 不用表单。

better_mouse
better_mouse   2015.05.28 09:40
better_mouse
better_mouse   2015.05.28 09:44
baihezzs
baihezzs   2015.05.28 10:26

是要问ajax如何接收呢,还是servlet如何转呢。

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!