ajax接受action传递json格式数据,ajax获取的为空,贴上配置和相关代码

天降扫把星 2013-05-20 02:47:34
$.ajax({
cache : false,
type : "POST",
// async : false, // 设置为同步,等到返回结果再继续
url : "/testjson.action",
contentType : "application/json; charset=utf-8",
beforeSend : function(XMLHttpRequest) {
$('#foot').text("loading...");
},
success : function(result) {
//alert("result: "+result)
$('#foot').text("result: "+result);
},
});

<result type="json">
<param name="root">result</param>
</result>

public void testJson(){ //action
JSONObject json = new JSONObject();
json.put("id", "123");
json.put("name", "baidu bae");
result = json;
System.out.println("test json & json : "+result);
}

控制台打印 test json & json : {"id":"123","name":"baidu bae"}
alert显示result:
foot 显示result:
使用的是百度BAE+eclipse。不知道和这有么有关系,之前这个在myeclipse上可以实现
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
robinLi0913 2015-01-15
  • 打赏
  • 举报
回复
诶有,我咋又迷糊了呢?有完整的流程吗?
天降扫把星 2013-05-20
  • 打赏
  • 举报
回复
引用 9 楼 mailyxf 的回复:
补充一下 你可以打印一下failed返回的数据 看看返回的是什么
没懂你意思。。。 ajax返回到jsp页面,先是loading...然后是result:
beforeSend : function(XMLHttpRequest) {
			$('#foot').text("loading...");
		},
		success : function(result) {
			alert("result: "+result)
			$('#foot').text("result: "+result);
		},
		error : function(xhr, msg, e) {
			alert("读取数据失败o(╯□╰)o")
		}
是添加error么,不会执行这个
钢筋裤衩蛋 2013-05-20
  • 打赏
  • 举报
回复
补充一下 你可以打印一下failed返回的数据 看看返回的是什么
钢筋裤衩蛋 2013-05-20
  • 打赏
  • 举报
回复
引用 楼主 hzau_chen 的回复:
$.ajax({
		cache : false,
		type : "POST",
		// async : false, // 设置为同步,等到返回结果再继续
		url : "/testjson.action",
		contentType : "application/json; charset=utf-8",
		beforeSend : function(XMLHttpRequest) {
			$('#foot').text("loading...");
		},
		success : function(result) {
			//alert("result: "+result)
			$('#foot').text("result: "+result);
		},
	});
<result type="json">
			 	<param name="root">result</param>
			 </result>
public void testJson(){ //action
		JSONObject json = new JSONObject();
		json.put("id", "123");
		json.put("name", "baidu bae");
		result = json;
		System.out.println("test json & json : "+result);
	}
控制台打印 test json & json : {"id":"123","name":"baidu bae"} alert显示result: foot 显示result: 使用的是百度BAE+eclipse。不知道和这有么有关系,之前这个在myeclipse上可以实现
我来了 你封装一下ajax成功返回的串,因为ajax提交的时候 成功和失败返回的是对应success和failed form提交时返回的时候都是success ,封装的串为{success:true,__msg:'"+__msg+"',__msgcode:'"+__msgcode+"'} 你可以试试看
天降扫把星 2013-05-20
  • 打赏
  • 举报
回复
引用 6 楼 shadowsick 的回复:
[quote=引用 5 楼 hzau_chen 的回复:] [quote=引用 3 楼 shadowsick 的回复:] 很明显是因为返回出问题,你就直接使用response.getWriter().print(json.toString());return none; struts的xml都不用配置了,然后页面直接获取这个字符再eval成json对象 具体可以参考我的博客的那个开源项目,也是使用很多ajax请求 http://blog.csdn.net/shadowsick
那我这个通过配置传值哪里错了[/quote] 很有可能是内部转换json的失败,因为他不单是返回你的result为json对象,而且可能把你的xxxService也转换,可能这个时候遇到转换不到的对象会抛异常中断导致无返回,所以ajax也一直没接受到返回值会处于未完成状态[/quote] HttpServletResponse response.没有getWriter()方法
小丑哥_V5 2013-05-20
  • 打赏
  • 举报
回复
引用 5 楼 hzau_chen 的回复:
[quote=引用 3 楼 shadowsick 的回复:] 很明显是因为返回出问题,你就直接使用response.getWriter().print(json.toString());return none; struts的xml都不用配置了,然后页面直接获取这个字符再eval成json对象 具体可以参考我的博客的那个开源项目,也是使用很多ajax请求 http://blog.csdn.net/shadowsick
那我这个通过配置传值哪里错了[/quote] 很有可能是内部转换json的失败,因为他不单是返回你的result为json对象,而且可能把你的xxxService也转换,可能这个时候遇到转换不到的对象会抛异常中断导致无返回,所以ajax也一直没接受到返回值会处于未完成状态
天降扫把星 2013-05-20
  • 打赏
  • 举报
回复
引用 3 楼 shadowsick 的回复:
很明显是因为返回出问题,你就直接使用response.getWriter().print(json.toString());return none; struts的xml都不用配置了,然后页面直接获取这个字符再eval成json对象 具体可以参考我的博客的那个开源项目,也是使用很多ajax请求 http://blog.csdn.net/shadowsick
那我这个通过配置传值哪里错了
proteinboy 2013-05-20
  • 打赏
  • 举报
回复
引用 3 楼 shadowsick 的回复:
很明显是因为返回出问题,你就直接使用response.getWriter().print(json.toString());return none; struts的xml都不用配置了,然后页面直接获取这个字符再eval成json对象 具体可以参考我的博客的那个开源项目,也是使用很多ajax请求 http://blog.csdn.net/shadowsick
正解
小丑哥_V5 2013-05-20
  • 打赏
  • 举报
回复
很明显是因为返回出问题,你就直接使用response.getWriter().print(json.toString());return none; struts的xml都不用配置了,然后页面直接获取这个字符再eval成json对象 具体可以参考我的博客的那个开源项目,也是使用很多ajax请求 http://blog.csdn.net/shadowsick
天降扫把星 2013-05-20
  • 打赏
  • 举报
回复
引用 1 楼 rory__ 的回复:
action需要return json数据的 这样前台才能得到数据呀 ajax中加上 如果失败的话看看调试的结果是什么样子的
是根据配置中的result来传递的啊,刚试了
public JSONObject testJson(){
		JSONObject json = new JSONObject();
		json.put("id", "123");
		json.put("name", "baidu bae");
		result = json;
		System.out.println("test json & json : "+result);
		return result;
	}
结果是foot一直显示loading...
rory__ 2013-05-20
  • 打赏
  • 举报
回复
action需要return json数据的 这样前台才能得到数据呀 ajax中加上 如果失败的话看看调试的结果是什么样子的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧