我被困在为 ajax 响应创建第一个通用代码的过程中。我根本没有在这里得到输出,无论是在 php 还是在 ajax 响应中。这必须包含在发布数据中。
这是我的ajax请求:
var info = {};
//get id info
info["ses-id"] = $("#theme").attr("scene");
//get template info
info["ses-template"] = $("#theme").attr("template");
$.ajax({
dataType: "json",
contentType: "application/json; charset=UTF-8",
data: JSON.stringify(info),
type: "POST",
url: "query.php"
}).done(function(data, textStatus, jqXHR) {
alert (data);
//window.location = "?szenen";
console.log("Data sent.");
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log("There was an error." + errorThrown);
});
这是我到目前为止的 query.php:
<?php
$return = $_POST;
$return["json"] = json_encode($return);
print(json_encode($return));
输出是一个对象,其中只有 json 条目填充有 []。
字符串化变量看起来不错,它是一个像这样的字符串:
{"ses-id":"1","ses-template":"2"}
感谢您的建议!
最佳答案
您的问题是您正在发送一个 json 编码的字符串作为 POST 正文,然后使用 $_POST 访问它。 $_POST 是键/值 POST 数据的数组。由于您的数据没有 key ,因此您无法从 $_POST 数组访问它。它只是一个值(一个字符串值)。
如果您将 PHP 脚本更改为:
<?php
echo file_get_contents("php://input");
?>
它将输出您传入的 JSON。请注意,无需执行 json_encode()
因为该值是字符串,而不是数组。您传递给它的 json 从未被解码。
或者,如果您的 JavaScript 是:
$.ajax({
data: { "data": JSON.stringify(info) },
type: "POST",
url: "query.php"
})
那么您的帖子正文将是:
data={"ses-id":"1","ses-template":"2"}
你可以这样做
<?php
echo $_POST["data"];
?>
再次注意您发送的数据从未被解码,因此它仍然只是一个字符串。 PHP 不会为您进行 json_decode。
关于php - JQuery.ajax 和对象和 php 的空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29011792/