ajax请求返回json数据的问题

tuyry 2013-11-12 10:43:54
这个是界面。

<script type="text/javascript">
$(function(){
$("#country").change(function(){
var country = $(this).val();
$.ajax({
url:"/demo",
type:"POST",
dataType:'json',
data:{"country":country},
success:function(data){
alert("data长度: "+$(data).size());
//alert(data);
//$("#city").append("<option>"+"沈阳"+"</option>");
},
error:function(){
alert("数据传输失败!");
}
});
});
});
</script>

这个是后台程序。

String country = request.getParameter("country");
response.setContentType("text;charset=UTF-8");
PrintWriter out = response.getWriter();
JSONObject data = new JSONObject();
data.put("0", "沈阳");
data.put("1", "天津");
data.put("2", "深圳");
data.put("3", "大连");
// String data2 = data.toString();
// JSONObject data = JSONObject.fromObject(data2);
out.print(data);
System.out.println(data.get("0")+" 长度111: "+data.size());
System.out.println("000 "+data);
out.flush();
out.close();


现在界面alert(data);返回的是[object Object],长度为1.
但是程序的后台返回的数据都正确,长度也为4.
求帮助界面怎么能返回和后台相同的数据.不知道哪里错了.
...全文
246 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
别闹腰不好 2013-11-12
  • 打赏
  • 举报
回复
eval("(" + data + ")");这个方法要根据你的字符串是什么格式的,如果你字符串已经是这种格式:[{id:1,name:mx},{id:1,name:mx},{id:1,name:mx}] 这么写就可以eval( data )。
notlikeGaoShou 2013-11-12
  • 打赏
  • 举报
回复
引用 楼主 u012592646 的回复:
这个是界面。

<script type="text/javascript">
	$(function(){
		$("#country").change(function(){
			var country = $(this).val();
			$.ajax({
				url:"/demo",
				type:"POST",
				dataType:'json',
				data:{"country":country},
				success:function(data){
					alert("data长度: "+$(data).size());
                    //alert(data);
					//$("#city").append("<option>"+"沈阳"+"</option>");
				},
				error:function(){
					alert("数据传输失败!");
				}
			});
		});
	});
</script>
这个是后台程序。

		String country = request.getParameter("country");
		response.setContentType("text;charset=UTF-8");
		PrintWriter out = response.getWriter();
		JSONObject data = new JSONObject();
		data.put("0", "沈阳");
		data.put("1", "天津");
		data.put("2", "深圳");
		data.put("3", "大连");
//		String data2 = data.toString();
//		JSONObject data = JSONObject.fromObject(data2);
		out.print(data);
		System.out.println(data.get("0")+" 长度111: "+data.size());
		System.out.println("000 "+data);
		out.flush();
		out.close();
现在界面alert(data);返回的是[object Object],长度为1. 但是程序的后台返回的数据都正确,长度也为4. 求帮助界面怎么能返回和后台相同的数据.不知道哪里错了.
用console.log(data)输出,结构都出来了,用firebug你一看就明白啦
tuyry 2013-11-12
  • 打赏
  • 举报
回复
引用 9 楼 u012463264 的回复:
[quote=引用 7 楼 u012592646 的回复:] [quote=引用 4 楼 u012463264 的回复:] [quote=引用 3 楼 u012592646 的回复:] [quote=引用 2 楼 u012463264 的回复:] $(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?[/quote] ajax 返回的是字符串,就算是json,你这么用也不对 ,[/quote] 怎么不是json类型了?我后台写的也是json啊。[/quote] ajax 返回来的就是个字符串,用eval(date)转一下。[/quote]

success:function(data){
					//$("#city").append("<option>"+"沈阳"+"</option>");
					alert(111);
					var question = eval("(" + data + ")");
						alert(222);
						alert(question);
					
				},
引用 9 楼 u012463264 的回复:
[quote=引用 7 楼 u012592646 的回复:] [quote=引用 4 楼 u012463264 的回复:] [quote=引用 3 楼 u012592646 的回复:] [quote=引用 2 楼 u012463264 的回复:] $(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?[/quote] ajax 返回的是字符串,就算是json,你这么用也不对 ,[/quote] 怎么不是json类型了?我后台写的也是json啊。[/quote] ajax 返回来的就是个字符串,用eval(date)转一下。[/quote]
引用 9 楼 u012463264 的回复:
[quote=引用 7 楼 u012592646 的回复:] [quote=引用 4 楼 u012463264 的回复:] [quote=引用 3 楼 u012592646 的回复:] [quote=引用 2 楼 u012463264 的回复:] $(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?[/quote] ajax 返回的是字符串,就算是json,你这么用也不对 ,[/quote] 怎么不是json类型了?我后台写的也是json啊。[/quote] ajax 返回来的就是个字符串,用eval(date)转一下。[/quote]

success:function(data){
					//$("#city").append("<option>"+"沈阳"+"</option>");
					alert(111);
					var question = eval("(" + data + ")");
						alert(222);
						alert(question);
				},
转换了啊,111有输出,222和后面的没输出。。。。。。。
huangchbao 2013-11-12
  • 打赏
  • 举报
回复

success:function(json){                     
$.each(json,function(i,data){
alert(i+'----'+data)
})}
 //alert(data);         
别闹腰不好 2013-11-12
  • 打赏
  • 举报
回复
success:function(date){ var s=eval(date); $(s).each(function(key,val){
别闹腰不好 2013-11-12
  • 打赏
  • 举报
回复
引用 7 楼 u012592646 的回复:
[quote=引用 4 楼 u012463264 的回复:] [quote=引用 3 楼 u012592646 的回复:] [quote=引用 2 楼 u012463264 的回复:] $(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?[/quote] ajax 返回的是字符串,就算是json,你这么用也不对 ,[/quote] 怎么不是json类型了?我后台写的也是json啊。[/quote] ajax 返回来的就是个字符串,用eval(date)转一下。
tuyry 2013-11-12
  • 打赏
  • 举报
回复
引用 1 楼 rui888 的回复:
var d = $.toJSON(data);
alert(d);
alert(d);这排没有输出哦,function进来了。求解啊。。。。。。
tuyry 2013-11-12
  • 打赏
  • 举报
回复
引用 4 楼 u012463264 的回复:
[quote=引用 3 楼 u012592646 的回复:] [quote=引用 2 楼 u012463264 的回复:] $(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?[/quote] ajax 返回的是字符串,就算是json,你这么用也不对 ,[/quote] 怎么不是json类型了?我后台写的也是json啊。
别闹腰不好 2013-11-12
  • 打赏
  • 举报
回复
$.each(目标,回调函数(索引或key,当前值){})用这个遍历
别闹腰不好 2013-11-12
  • 打赏
  • 举报
回复
引用 3 楼 u012592646 的回复:
[quote=引用 2 楼 u012463264 的回复:] $(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?[/quote] ajax 返回的是字符串,就算是json,你这么用也不对 ,
弓厶弓厶 2013-11-12
  • 打赏
  • 举报
回复
你可以在success:function(data){内部第一行输入debugger;实现一个断点。IE以外的我不太清楚,但是IE的可以在这样断的。然后你直接对data右键,添加到监视里面就可以知道这个东东的数据和数据类型了。 记得在运行这段JS之前先按F12,然后启动调试模式
tuyry 2013-11-12
  • 打赏
  • 举报
回复
引用 2 楼 u012463264 的回复:
$(data)这是怎么回事,data是字符串,不能这么用吧
我发的ajax请求设置的typeData是json,返回的应该是json类型的吧?
别闹腰不好 2013-11-12
  • 打赏
  • 举报
回复
$(data)这是怎么回事,data是字符串,不能这么用吧
tony4geek 2013-11-12
  • 打赏
  • 举报
回复
var d = $.toJSON(data);
alert(d);

81,091

社区成员

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

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