2 u013639005 u013639005 于 2014.04.15 11:36 提问

急求使用jquery提交的请求回调函数接收不到后台返回值解决办法

$.ajax({
type: "post",
url: uri,
async:true,
data: data,
success: function (result) {
$("#showrecord").append(result);
},
error:function(XMLResponse){
alert("wait a minute");
}
});
后台:
HttpServletResponse res=ServletActionContext.getResponse();
PrintWriter out = res.getWriter();
StringBuffer data = new StringBuffer();
data.append("

");
data.append("");
data.append("");
data.append("");
data.append("");
data.append("");
data.append("");
data.append("");
data.append("");
data.append("");
for(int i=0;i data.append("");
data.append("");
data.append("");
data.append("");
}
data.append("");
data.append("
用户列表
#用户名昵称密码
"+sequenceNums.get(i)+""+recordList.get(i).getTime()+""+recordList.get(i).getAddress()+"
");
String str=new String(data.toString().getBytes("UTF-8"),"UTF-8");
out.print(str);
out.flush();
out.close();
理想效果是在页面输入查询条件后,点击按钮后在按钮下方的div层里显示后台返回的数据,现在点击按钮后,后台接收到了请求,但是页面原有的查询框和按钮不见了,出现一个只显示后台out.print(data);的数据的页面,还是乱码的,显示之前jquery的error:function(){}执行了,求大神分析哪里出了问题

1个回答

u014727316
u014727316   2014.04.15 14:07

你是从后台返回到前台str变量?如果是的话,这样success: function (result) 中result是接收不到的

u013639005
u013639005 谢谢。。。万谢。。拜谢!!!我把页面重写了,TM的就莫名的好了
3 年多之前 回复
u014727316
u014727316 ajax就是有这么神奇的功能, 具体怎么实现的我就不清楚了, 它的作用不就是局部刷新,异步获取么? 你的PrintWriter相关的那四句没用, 删了就行 , 你可以试验一下, 把那四句删除了, 把success改成success: function (result) {alert("获取成功");}, 肯定能弹出"获取成功", 但这样ajax只知道代码执行成功了,所以执行success中的内容, 但是它获取不到success里的result, 也就是后台的str , 要想像你那样获取到它,并且弹出来, 必须在后台最后加一行代码, 那就是将字符串str转换成JSON串, 这样ajax才能获取到result的值, 所以在后台代码当中, 你要删除掉那四句out的, 最后加上转化成json串的代码, 就行了
3 年多之前 回复
u013639005
u013639005 能说具体点么,后台不返回的话前台是怎么自动获取数据并对数据进行操作的
3 年多之前 回复
u014727316
u014727316 你把PrintWriter那句去掉,最后面3个out.xxx()也去掉,,在String str=new String(data.toString().getBytes("UTF-8"),"UTF-8");的后面加一句,就是用writerJson()方法转化一下str就完了,,,ajax不需要在后台写返回方法,它自己就能获取,,,
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!