ajax为什么得不到servlet返回的json数据?

面向阳光 发布于 2014/04/14 09:11
阅读 4K+
收藏 1

1、json数据:json = {"name":"aaa","email":"15135131","addr":"深圳","tel":"123456789"}

infoServlet输出如下:

response.setContentType("application/x-json;charset=utf-8");

PrintWriter out= response.getWriter();

out.print(json);

out.flush();

2、jquery

$.ajax({

type:"post",

url:"infoServlet",

dataType:"json",

success:function(data){

$.each(data,function(index,value){

alert(data);

});

}

});


data是空的。。。。。。为什么啊?

加载中
1
Ryan-瑞恩
Ryan-瑞恩


1.检查数据返回格式。

2.检查JSON。JSON严格是双引号的,不是单引号。

3.把error:function(){}加上去看看。。。。


面向阳光
面向阳光
最后我用ajax提交表单,数据就能回来了
面向阳光
面向阳光
回复 @Rayn-瑞恩 : 我单独测试过,页面不向servlet发送数据,只发送请求,servlet不查询数据库只返回一个写死的json字符转,ajax是能够成功拿到数据的,这怎么解??
Ryan-瑞恩
Ryan-瑞恩
@面向阳光 单步调试去吧。。。。
面向阳光
面向阳光
回复 @Rayn-瑞恩 : 是servlet处理两次请求,一次是页面发的,一次是servlet发的
Ryan-瑞恩
Ryan-瑞恩
回复 @面向阳光 : 意思是你发了两次请求。。。。。。。我汗。。。。。
下一页
0
ththththht
ththththht

data是string吧

ththththht
ththththht
回复 @面向阳光 : 去掉dataType:"json"试试 jQuery会自动识别的吧
面向阳光
面向阳光
可是用eval换成对象也没有啊,况且ajax里面我不是指定datatype了吗?应该直接就是返回json对象了
0
写下带不走的风
写下带不走的风

data转成json对象就可以了

zjxzjx
zjxzjx
回复 @面向阳光 : eval('['+data+']') 试下。
面向阳光
面向阳光
你是说用eval吗?我用过了,我是这么写的 var obj = eval('('+data+')') 可还是不行啊
0
Mr_Tank_
Mr_Tank_

url:"infoServlet",这个URL请求到了么?

面向阳光
面向阳光
请求到了,页面都可以打印出来了,可ajax就是拿不到!!
0
卐卍卍卐
卐卍卍卐

setContentType("text/html")就行了 

面向阳光
面向阳光
我原来是这么样子的,得不到我才改成现在这样子的
0
xpbug
xpbug

看你的程序是没有错误的,可能错误出在你的逻辑或者是servlet的返回数据上。首先,如果你只是get,为何使用post Method. 

如果你在用chrome,可以按F12,调出开发工具。

在Network中查看ajax请求的response是否正确, 然后再从Console中查看是否有js错误。

正确的返回应该为

HTTP/1.1 200 OK
Content-Type: application/x-json;charset=utf-8

{"name":"aaa","email":"15135131","addr":"深圳","tel":"123456789"}

xpbug
xpbug
回复 @面向阳光 : 这才是问题所在。把你的servlet code贴上来。我怀疑你的代码存在问题。
面向阳光
面向阳光
我用firebug 跟踪了一下,返回头有html标签这是什么情况?
0
面向阳光
面向阳光

引用来自“Rayn-瑞恩”的评论


1.检查数据返回格式。

2.检查JSON。JSON严格是双引号的,不是单引号。

3.把error:function(){}加上去看看。。。。


借这位大牛的启发,是表单提交的问题,我后来改用ajax提交表单数据就能获取到了

返回顶部
顶部