Joo*_*bma 0 javascript php ajax json object
我正在尝试将我的javascript对象发送到PHP JSON.stringify()
使用Javascript:
$('#save').on('click touch', function(){
obj = {
"1" : {
"1" : "hey",
"2" : "hay"
},
"2" : {
"1" : "hey",
"2" : "hay"
}
}
var json = JSON.stringify( obj );
console.log(json)
$.ajax({
type: 'POST',
url: 'ajax.php',
success: function(data) {
alert(data);
$("p").text(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
ajax.php:
<?php
$obj = json_decode($json);
echo $obj;
?>
Run Code Online (Sandbox Code Playgroud)
但是这段代码返回一个错误,说明$json没有定义.我不知道为什么这不起作用.
有两个问题.
首先,添加此*:
$.ajax({
type: 'POST',
url: 'ajax.php',
data : { json: json }, // <---------------------
...
Run Code Online (Sandbox Code Playgroud)
*这只是因为jQuery实现会自动将任何非字符串数据参数转换为form-urlencoded查询字符串.查看文档.
然后,在PHP中,您应该:
$jsonStr = $_POST['json'];
$json = json_decode($jsonStr);
Run Code Online (Sandbox Code Playgroud)
另一种可能方式:
$.ajax({
type: 'POST',
url: 'ajax.php',
data : json , // <---------------------
...
Run Code Online (Sandbox Code Playgroud)
这样,您的数据将不是有效的form-urlencoded输入,因此PHP不会将其解析为$_POST,但您仍然可以获取输入的内容:
$jsonStr = file_get_contents("php://input");
$json = json_decode($jsonStr);
Run Code Online (Sandbox Code Playgroud)