Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery.ajax和object与php的空响应_Php_Jquery_Ajax_Json - Fatal编程技术网

JQuery.ajax和object与php的空响应

JQuery.ajax和object与php的空响应,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我一直在为ajax响应创建我的第一个通用代码。我在这里没有得到任何输出,无论是在php中还是在ajax响应中。这必须在post数据中包含某些内容 这是我的ajax请求: var info = {}; //get id info info["ses-id"] = $("#theme").attr("scene"); //get template info info["ses-template"] = $("#theme

我一直在为ajax响应创建我的第一个通用代码。我在这里没有得到任何输出,无论是在php中还是在ajax响应中。这必须在post数据中包含某些内容

这是我的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编码的字符串作为帖子正文,然后使用$\u POST访问它$_POST是键/值POST数据的数组。由于您的数据没有密钥,因此无法从$\u POST数组访问它。它只是一个值(一个字符串值)

如果将PHP脚本更改为:

<?php
echo file_get_contents("php://input");
?>
那么您的帖子主体将是:

data={"ses-id":"1","ses-template":"2"}
然后你就可以做了

<?php
echo $_POST["data"];
?>


再次指出,你发送的数据从未被解码,所以它仍然只是一个字符串。PHP不会为您解码json。

当您删除contentType和json时,它会工作。stringify:

    var info = {};
    //get id info
    info["ses-id"] = $("#theme").attr("scene");
    //get template info
    info["ses-template"] = $("#theme").attr("template");

    $.ajax({
        dataType: "json",
        data: info,
        type: "POST",
        url: "query.php"
    }).done(function(data, textStatus, jqXHR) {
       console.log(data);
        //window.location = "?szenen";
        console.log("Data sent.");
    }).fail(function(jqXHR, textStatus, errorThrown) {
        console.log("There was an error." + errorThrown);
    });

数据类型和内容类型都必须停用,然后我得到了响应

    $.ajax({
        //dataType: "json",
        //contentType: "application/json; charset=UTF-8",
        data: JSON.stringify(info),
        type: "POST",
        url: "query.php"
改变info对象会导致php变量的变化,但这不是我的问题


非常感谢所有人,尤其是那些把我推到正确方向的人。

succes函数在哪里?它不需要是
json\u decode
?@Naruto succes()、error()和complete()在JQuery 1中被弃用。8@Naruto从jQuery文档:
成功回调选项的另一种构造,.done()方法替换了不推荐使用的jqXHR.success()方法
好吧,看来我今天学到了一些新东西:)我将行更改为
data:{“data”:JSON.stringify(info)},
,但是$\u POST[“data”]仍然是空的。我不明白。请检查
echo文件是否包含内容(“php://input");工作。还更新了我的答案,删除了定义的json数据/内容类型。我正在获取数据(哇哦),但它似乎是URL编码的。我将尝试将它放入post变量中。当您删除
contentType
JSON.stringify
时,就像我的回答中一样,然后$\u post是正常数组,具有预期的键值对。np,很抱歉,我没有注意到,我假设jquery是正确的,只是手动测试post调用,并且看到数据顺利通过。还刚刚检查了文档,不要删除
数据类型:“json”
我对他说,这就是解码json响应的内容,结果是contentType和dataType必须被删除。
    var info = {};
    //get id info
    info["ses-id"] = $("#theme").attr("scene");
    //get template info
    info["ses-template"] = $("#theme").attr("template");

    $.ajax({
        dataType: "json",
        data: info,
        type: "POST",
        url: "query.php"
    }).done(function(data, textStatus, jqXHR) {
       console.log(data);
        //window.location = "?szenen";
        console.log("Data sent.");
    }).fail(function(jqXHR, textStatus, errorThrown) {
        console.log("There was an error." + errorThrown);
    });
    $.ajax({
        //dataType: "json",
        //contentType: "application/json; charset=UTF-8",
        data: JSON.stringify(info),
        type: "POST",
        url: "query.php"