菜鸟:关于jquery ajax调用action 返回值的问题
求助.,我是做后台的,ajax 基本上没怎么接触过,JS也不是很好
我想问一下,怎么通过jquery ajax 最简单的调用aciton ,action返回 一个list ,如何让页面接收到这个list并显示出来,
多谢,比如,我调用一个 显示全部用户姓名的action ,返回是一个字符串数组 还是 ?
麻烦多少一点,谢谢!
------解决方案--------------------你在action中得到response对象。由response对象得到WriterPrinter 的out对象。然后用write(list)
就行了。
list最好要变成json的形式。
------解决方案--------------------
lz 对ajax理解貌似有点问题。你action返回的值 ajax是得不到的。ajax能得到的是你action里往前台输出的内容,也就是action往输出流里输出的内容,而不是返回值。如果lz想要得到action返回给ajax的内容,那么在action里要得到输出流,然后把要给ajax的东西给输出流。这样ajax端才能得到你输出的内容。
------解决方案--------------------
Ajax主要是通过XMLHttpRequest来工作
js代码:
var XMLHttpReq;
//创建XMLHttpRequest
function createXMLHttpRequest()
{
if(window.XMLHttpRequest)
{
XMLHttpReq=new XMLHttpRequest();
alert("DOM2浏览器 创建XMLHttpRequest对象");
}
else if(window.ActiveXObject)
{
try
{
XMLHttpReq=new ActiveXObject("Msxml2.XMLHTTP");
alert("Internet Explorer 创建XMLHttpRequest对象1");
}
catch(e)
{
try
{
XMLHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
alert("Internet Explorer 创建XMLHttpRequest对象2");
}
catch(e)
{}
}
}
}
function sendRequest()
{
createXMLHttpRequest();
var url="example";
XMLHttpReq.open("POST",url,true);
XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XMLHttpReq.onreadystatechange=processResponse;
var msg='test';
XMLHttpReq.send("Msg="+msg);
}
function processResponse()
{
if(XMLHttpReq.readyState==4)
{
if(XMLHttpReq.status==200)
{
alert(XMLHttpReq.responseText);
}
else
{
window.alert("您所请求的页面有异常");
}
}
}
主要方法是sendRequest(),将该方法绑定到一个按钮上就可以了,如:
<input type="button" name="button" value="提交" onclick="sendRequest();" />
sendRequest里面的url就是要请求的路劲,也就是action的路径
在Action里面的java代码:
String list=.....;//这里将你的list组合成一个字符串
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.print(list);
out.flush();
out.close();
这样就可以了,建议找书看看,很快就能学会的