请选择 进入手机版 | 继续访问电脑版
查看: 159|回复: 14

[疑问] 大佬帮我看看这个ajax的毛病

[复制链接]

1

主题

17

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2019-12-12 13:28:30 | 显示全部楼层 |阅读模式

后台servlet接收,设置了contentType为json的请求后台接收不到,另一个正常。
接下来传一个data1,这是个json 对象,还是设置了contentType为json的请求后台接收不到

再传一个data2=JSON.stringify(data1)
两个都接收不到。彻底凌乱,ajax不应该传递json字符串吗,怎么反过来,传递对象正确,string就错了
回复

使用道具 举报

0

主题

31

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2019-12-12 13:34:41 | 显示全部楼层
contentType 告诉你输入流的类型是json(而不是文件或者文本),用输入流去读取吧,单独的request不可能。你这是刚入门吧
回复

使用道具 举报

1

主题

17

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2019-12-12 13:35:11 | 显示全部楼层
后台接收
String type = req.getParameter("type");
这种方式,按理说传递过来的对象是获取不到
回复

使用道具 举报

1

主题

17

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2019-12-12 13:39:34 | 显示全部楼层

BOC 发表于 2019-12-12 13:34
contentType 告诉你输入流的类型是json(而不是文件或者文本),用输入流去读取吧,单独的request不可能。 ...

谢谢,没正规学习,属于抄代码看代码查代码这样
用stringbuffer能读到输入流json 了,可另一个问题,在不设置contentype的情况下,后台req。getParameter为什么传对象的可以获取,反而stringify的不行
回复

使用道具 举报

1

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2019-12-12 13:34:00 | 显示全部楼层
data传入的是json字符串,不是json对象,下面那个能用的,不是封装过了就是,已经将对象转为json字符串了
回复

使用道具 举报

0

主题

31

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2019-12-12 13:43:45 | 显示全部楼层

赵蜇 发表于 2019-12-12 13:39
谢谢,没正规学习,属于抄代码看代码查代码这样
用stringbuffer能读到输入流json 了,可另一个问题,在 ...

还有,ajax传过去的是
{"type":"josn","text","cmn"}
request 只需要获取 key 就能拿到value
你的stringify 也是json对象,那他也有key
后台同样用request 获取data1里面的key就能拿到
回复

使用道具 举报

0

主题

31

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2019-12-12 13:44:45 | 显示全部楼层

fosen 发表于 2019-12-12 13:43
data传入的是json字符串,不是json对象,下面那个能用的,不是封装过了就是,已经将对象转为json字符串了 ...

不要误导别人,是他自己获取方式有问题 var data1=JSON.stringify("{'data':'test','text','cnm'}");这个data1就是对象,放在data处 后台可以获取到。你的描述应该是 JSON.stringify 不能再转换json对象为json对象了,里面只能是字符串
回复

使用道具 举报

1

主题

17

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2019-12-12 13:39:00 | 显示全部楼层

fosen 发表于 2019-12-12 13:43
data传入的是json字符串,不是json对象,下面那个能用的,不是封装过了就是,已经将对象转为json字符串了 ...

对,应该传递JSON.stringify(对象)这种字符串,可事实就是我传递data:对象后台可以用key获取到value,可传递data:string却获取不到value
回复

使用道具 举报

0

主题

31

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2019-12-12 13:47:49 | 显示全部楼层

赵蜇 发表于 2019-12-12 13:48
对,应该传递JSON.stringify(对象)这种字符串,可事实就是我传递data:对象后台可以用key获取到value,可 ...

js里面  {xx:'',xx''} 这就是json对象,不是字符串 ;
"{xx:'',xx''} "  这是字符串  不是json对象
你先搞清楚二者的区别吧
回复

使用道具 举报

1

主题

17

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2019-12-12 13:43:00 | 显示全部楼层

BOC 发表于 2019-12-12 13:44
还有,ajax传过去的是
{"type":"josn","text","cmn"}
request 只需要获取 key 就能拿到value

{"type":"josn","text","cmn"}这种传递后台根据key能拿到value没问题
我的data1是一个对象,data2是stringify(data1)得到的
两个的alert显示如下

按理传递data2才应该能key-value获取,传递object不能直接key-value
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 主机之家 |网站地图

返回顶部