猿问

php 如何获取ajax 发送的json字符串??

前端:

$.ajax({
    url: url , 
    method: 'post' , 
    contentType: 'application/json' ,
    data: JSON.stringify({
        name: 'test'
    })
});

服务端:

print_r($_REQUEST); // []
print_r($_POST); // []
print_r($_GET); // []

// 最后!
print_r(file_get_contents('php://input')); // {"name": "test"}

是否发送的 json 字符串只能通过 php://input 这种方式获取?通过这种方式进行前后端数据交互有什么优势??

largeQ
浏览 637回答 8
8回答

暮色呼如

1.php的底层代码会对http请求做一个基本的处理,然后放进$_GET,$_POST,$_REQUEST2.当请求是原生json字符串时,php底层无法处理,所以只能从php://input中获取3.对于强类型语言,用json传的好处是他们可以把json转为对象,对于php其实并没有好处

开心每一天1111

你这ajax写的忒麻烦了,直接 $.ajax({ url: url, method: 'POST', data: {name: 'test'} }); 就行了,很多东西扔给jQ来处理就好。

慕容708150

字符串的话,使用 file_get_contents('php://input') 就行了。 php接收post数据,一般就两种方式:1.$_POST2.file_get_contents('php://input') 一般 ajax 库两种方式都支持,但默认支持的方式不一样: jQuery的 ajax ,php后端直接使用 $_POST 接收就可以了。 axios ,默认情况下需要用 第二种方法接收。 但你可以修改相应的配置,想了解的话,自己搜索一下。 另外,jQuery的ajax支持多层嵌套,而 axios 不支持。

繁星点点滴滴

$_POST,$_GET,是获取表单数据的,也就是Content-Type=application/x-www-form-urlencoded或multipart/form-data

杨__羊羊

一般用json类型传递参数适合比较复杂的交互,通过json传递,后端可以直接映射到一个实体上,比较方便后端代码编写。同时,js对json格式也支持的比较友好,很多前端开发,通过json也比较方便处理。
随时随地看视频慕课网APP
我要回答