php - JQuery.ajax 和对象和 php 的空响应

标签 php jquery ajax json

我被困在为 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/

相关文章:

javascript - 当我的键是数字(1,2,3 ....)时,如何访问 JSON 中的数据元素

来自单独 html 文件的 Javascript 文本预览

javascript - PHP MySQL : count views per month for jQuery charts

javascript - 获取当前表行的值

android - jQuery Mobile 未运行辅助 javascript

javascript - 使用 AJAX 更改先前的选择值后动态更新选择

javascript - 如何使用 html、css、javascript 和 php 和 mysql 作为后端为网站创建登录页面?

php - 将简单的 C++ 移植到 PHP 代码

php - PHP中如何删除重复值

jquery - 仅在一个 div 顶部的粘性部分