Man*_*tto 112 php json xmlhttprequest
file_get_contents("php://input")
或者$HTTP_RAW_POST_DATA
- 哪一个更好地获得JSON请求的主体?
在使用客户端时,我应该使用哪种请求类型(GET
或POST
)来发送JSON数据XmlHTTPRequest
?
我的问题来自这个答案: 如何使用curl将JSON发布到PHP
从那个回答引用:
从协议的角度来看
file_get_contents("php://input")
实际上更正确,因为你还没有真正处理http多部分表单数据.
zaf*_*zaf 189
实际上php://input
允许您读取原始POST数据.
它是$ HTTP_RAW_POST_DATA的内存密集型替代品,不需要任何特殊的php.ini指令.
php://input
不适用enctype="multipart/form-data"
.
参考: http ://php.net/manual/en/wrappers.php.php
小智 15
php:// input是一个只读流,允许您从请求正文中读取原始数据.在POST请求的情况下,最好使用php:// input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令.此外,对于默认情况下未填充$ HTTP_RAW_POST_DATA的情况,它可能是激活always_populate_raw_post_data的内存密集型替代方案.
资料来源:http://php.net/manual/en/wrappers.php.php.
zlo*_*ctb 11
file_get_contents(php:// input) - 获取原始POST数据,你需要在编写API时使用它,并且需要XML/JSON/...输入,这些输入无法通过PHP解码为$ _POST 一些例子:
通过邮寄JSON字符串发送
<input type="button" value= "click" onclick="fn()">
<script>
function fn(){
var js_obj = {plugin: 'jquery-json', version: 2.3};
var encoded = JSON.stringify( js_obj );
var data= encoded
$.ajax({
type: "POST",
url: '1.php',
data: data,
success: function(data){
console.log(data);
}
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
1.PHP
//print_r($_POST); //empty!!! don't work ...
var_dump( file_get_contents('php://input'));
Run Code Online (Sandbox Code Playgroud)