Action中写入返回值后, 前台jQuery ajax 执行error, 不执行success

发布于 2021-11-29 02:00:43 字数 1678 浏览 857 评论 25

//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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(25

别再吹冷风 2021-12-02 01:25:58

回复
请问你的ajax随机执行,有时执行有时不执行,执行跳入error中,请问你是怎么解决的,求指教

好听的两个字的网名 2021-12-02 01:25:58

怎么解决的?

少女情怀诗 2021-12-02 01:25:58

谢谢,早已解决。

本宫微胖 2021-12-02 01:25:56

请问您有好的解决办法吗?

如日中天 2021-12-02 01:25:56

struts2的弊端。

筱武穆 2021-12-02 01:25:53

ajax json,在这return null 与 return SUCCESS 应该一样的效果把?

离不开的别离 2021-12-02 01:25:53

我也碰到了这个问题,只是在手机上。天呐,居然没解。

草莓味的萝莉 2021-12-02 01:25:53

回复
改用spring-mvc。

把回忆走一遍 2021-12-02 01:25:52

这个要看Action中对与null的处理了,没有研究,这只是我以前使用的经验

吃颗糖壮壮胆 2021-12-02 01:25:51

回复
没有影响的

飘然心甜 2021-12-02 01:25:50

null做为字符串,struts中要有result节点对应

你可以写成return NONE

情痴 2021-12-02 01:25:49

返回的json中必需有success:true,我用springmvc是这样

好听的两个字的网名 2021-12-02 01:25:46

return null;也没错啊

网名女生简单气质 2021-12-02 01:25:45

不是用 response.getWriter().write(json); 的吗? 怎么用 response.getWriter().print(json); ?

羁拥 2021-12-02 01:25:44

你用的是 response.setContentType("text/html"); 这是html格式 ,你把它改成 application/json

初见你 2021-12-02 01:25:41

回复
试过了。没用。

狠疯拽 2021-12-02 01:25:31

你可以先看通过浏览器查看返回的是json格式还是什么,
下面可以专门返回JSON格式

response.setContentType("application/json; charset=UTF-8");
   response.getWriter().print(json);

 

这样专门返回JSON格式

爱的故事 2021-12-02 01:25:15

试过了。还是不行。

恋你朝朝暮暮 2021-12-02 01:25:06

回复
楼下应该说对了吧。

情绪失控 2021-12-02 01:23:51

不要沉下去了啊。各位帮忙啊,2天了,依然解决不了。

沦落红尘 2021-12-02 01:22:44

当然,我debug了,在后台能接受ajax传递的参数。就是jQuery 不能获取后台写到 response 的 json 字符串。

甜扑 2021-12-01 17:32:56

@Minuzy 你用的啥?servlet还是struts?版本多少?没说清楚,不会有人回答的。。

无人问我粥可暖 2021-12-01 17:03:34

回复
呵呵。struts2,版本是2.3.7

混吃等死 2021-12-01 14:48:22

你确定你进了action了吗?

回眸一笑 2021-12-01 14:03:30
asyncBoolean(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文