Action中写入返回值后, 前台jQuery ajax 执行error, 不执行success
//action - execute HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html"); String msg = "{"state":"" + state + ""}"; PrintWriter out = response.getWriter(); out.write(msg); out.flush(); out.close(); return null;
<package name="global" extends="json-default"> <action name="login" class="loginAction"> <result type="json" /> </action> </package>
jQ.ajax({ url:"login.action", data:params, success:function(json){ var data = json.state; if(data=="success") jQ.jBox.alert("登入成功", "action message"); if(data=="failed") jQ.jBox.alert("登入失败", "action message"); if(data=="error") jQ.jBox.alert("登入出错", "action message"); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("XMLHttpRequest.status="+XMLHttpRequest.status+ "nXMLHttpRequest.readyState="+XMLHttpRequest.readyState+ "ntextStatus="+textStatus); } });
在 jQ.ajax() 的时候总是执行error下的回调函数,根本不执行success回调函数,请各位帮忙看下,是为什么。
还有想请教一个问题,在Action中 如果把所需要传递到前台的数据 不用 response.getWriter().Write() 来写,而用Action的setter,getter方法来实现,这样是否可行?
各位劳烦帮忙看下,谢谢。@红薯 老大,您怎么看?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(25)
回复
请问你的ajax随机执行,有时执行有时不执行,执行跳入error中,请问你是怎么解决的,求指教
怎么解决的?
谢谢,早已解决。
请问您有好的解决办法吗?
struts2的弊端。
ajax json,在这return null 与 return SUCCESS 应该一样的效果把?
我也碰到了这个问题,只是在手机上。天呐,居然没解。
回复
改用spring-mvc。
这个要看Action中对与null的处理了,没有研究,这只是我以前使用的经验
回复
没有影响的
null做为字符串,struts中要有result节点对应
你可以写成return NONE
返回的json中必需有success:true,我用springmvc是这样
return null;也没错啊
不是用 response.getWriter().write(json); 的吗? 怎么用 response.getWriter().print(json); ?
你用的是 response.setContentType("text/html"); 这是html格式 ,你把它改成 application/json
回复
试过了。没用。
你可以先看通过浏览器查看返回的是json格式还是什么,
下面可以专门返回JSON格式
这样专门返回JSON格式
试过了。还是不行。
回复
楼下应该说对了吧。
不要沉下去了啊。各位帮忙啊,2天了,依然解决不了。
当然,我debug了,在后台能接受ajax传递的参数。就是jQuery 不能获取后台写到 response 的 json 字符串。
@Minuzy 你用的啥?servlet还是struts?版本多少?没说清楚,不会有人回答的。。
回复
呵呵。struts2,版本是2.3.7
你确定你进了action了吗?