Home >Backend Development >PHP Tutorial >javascript - $.ajax传json字符串不行,传json对象就行

javascript - $.ajax传json字符串不行,传json对象就行

WBOY
WBOYOriginal
2016-06-06 20:29:431227browse

如图所示,我看到很多文章里都是把数据转换成json字符串传过去的,但我这样做之后提示
javascript - $.ajax传json字符串不行,传json对象就行

可以看到Form Data里面的数据没对,把我传的值当作一个键值了,后台也无法接收到数据(解析了json字符串也不行,输出为空)
javascript - $.ajax传json字符串不行,传json对象就行

代码如下
javascript - $.ajax传json字符串不行,传json对象就行

如果直接传对象进去,就对了,后台也能接收到数据
javascript - $.ajax传json字符串不行,传json对象就行
javascript - $.ajax传json字符串不行,传json对象就行

不知道问题出在哪儿,求大神指点

回复内容:

如图所示,我看到很多文章里都是把数据转换成json字符串传过去的,但我这样做之后提示
javascript - $.ajax传json字符串不行,传json对象就行

可以看到Form Data里面的数据没对,把我传的值当作一个键值了,后台也无法接收到数据(解析了json字符串也不行,输出为空)
javascript - $.ajax传json字符串不行,传json对象就行

代码如下
javascript - $.ajax传json字符串不行,传json对象就行

如果直接传对象进去,就对了,后台也能接收到数据
javascript - $.ajax传json字符串不行,传json对象就行
javascript - $.ajax传json字符串不行,传json对象就行

不知道问题出在哪儿,求大神指点

你这样的写法应该是 contentType:'application/json'

@liuruizhe728 说的对

<code class="php">contentType:'application/json'
//后台接收$json = file_get_contents('php://input');
//$arr = json_decode($json,true);</code>

个人建议你下载未压缩的jQuery,单步跟踪源代码执行,比大神直接告诉你涨经验。

data的数据格式可以为字符串/json格式的对象/数组
但是有个条件都需要能够被解析为查询字符串,也就是key/value键值对形式

data本来就应该传对象啊……谁说传字符串的
自己去查下api不就知道了……

你对 dataType:"json"怎么理解的?如果你认为这是,传到服务器的格式,你就弄错了,自己去查查资料,这里的dataType到底是指什么?@liuruizhe728 的方法应该是可以的

$.ajax 方法的 data 只允许两种参数类型:**Object** 和 **QueryString**,你传个 JSON 肯定不行啊,另个,dataType 是指 Response 回来的类型,不是你 Request 过去的类型!

是你用错了,data本身就应该是一个Object,改成下面这样,后台接收key之后就可以拿到json了,解析一下就好了

<code>data: {
    key: aa
}</code>

另外dataType是服务端返回的类型,也就是api必须返回json格式的数据

手册

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn