将字符串化的json对象传递给php并访问它

时间:2017-01-07 14:11:04

标签: php arrays json ajax object

我正在尝试将一个字符串化的json对象发送到php并在我解码后访问它,但我无法设法做到这一点,我在php中收到的是一个空... ...:

JS:

var bruh = {id: "509", type: "14", sortorder: "0", status: "1", name: "Pop-up SaaS", title: "test", request: true};

serializedData = JSON.stringify(bruh);

request = $.ajax({
  url: url,
  type: "POST",
  dataType: "JSON",
  data: serializedData
});

request.done(function (response, textStatus, jqXHR){
  console.log("Hooray, it worked!"+response, textStatus, jqXHR);
});

PHP:

header('Content-Type: application/json');

$article = json_decode($_POST['data']); // $_POST['data'] is null don't know why

我如何知道$ _POST为空?好吧,我正在输出结果并检查我的console.log上的响应,如下所示:

echo json_encode($_POST['data']);

echo json_encode($_POST);

echo json_encode($_POST[0]);

echo $_POST['data'];

print_r($_POST); //SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

我收到的确切回复是(通过Firebug):

readyState  4
responseJSON  null
responseText  "null"
status  200
statusText  "OK"

有人可以帮我解决这个问题吗?

更新:我也尝试过这样发送:

serializedData =“{data:”+ JSON.stringify(bruh)+“}”;

但仍然没有结果

2 个答案:

答案 0 :(得分:0)

尝试改变 4 4 1 2 -5 4 1 2 2 3 2 3 1 1 data: serializedData

确认帖子字段'数据'确实被发布了,您可以使用fiddler或大多数浏览器内置的网络工具来检查标题。

在php中检查字段:

data: {'data': seralizedData},

答案 1 :(得分:0)

当dataType是json时,你必须在php文件中使用json_decode(file_get_contents('php://input'), true);来绘制提交的数据。然后你就可以获得数据了。或者您可以删除dataType。

jQuery的:

var bruh = {id: "509", type: "14", sortorder: "0", status: "1", name: "Pop-up SaaS", title: "test", request: true};
$.ajax({
    url: url,
    type: 'POST',
    data: bruh,
})
.done(function(data) {
    console.log("Result " + data);
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});

在php中你可以使用$_POST,不需要json_decode。

echo $_POST['type']; // 14