猿问

AJAX POST发送空白而不是JSON对象

我正在使用一个名为register.php的PHP文件在我的数据库中注册新用户,其中一些数据来自注册表格,但是,我数据库中的最后两个数据字段是两个默认的JSON对象。为此,我在注册按钮click事件上的js文件中创建了变量,然后使用JSON.stringify()将其与AJAX / JQuery一起发送,如下所示:


除了AJAX / JQuery之外,我还尝试使用xmlhttp,创建请求并使用open(“ GET”,...),send(...)发送数据并在PHP上以相同方式接收数据文件。两种方法最终都接收到空格,而不是JSON对象。



    $("#registerButton").click(function(){


        cards = {"idcards": [1,4,7,10,13,16,17,19,23,27,29,35,39,41,43,46,58,77,95,120]};

        cardsJSON = JSON.stringify(cards);



        $.ajax({

            type: 'POST', 

            url: 'php_includes/register.php',

            data: {cards: cardsJSON},

            dataType: 'json'

        });

    });

这是PHP代码:


...


$freecards = $_POST['cards'];

...


#I'm omitting the other query values to simplify this.


$query = "INSERT INTO users VALUES ('{$freecards}')";

我希望收到与在JS文件开头声明的相同的JSON对象,而不是我进入数据库的空白。


忽然笑
浏览 281回答 3
3回答

一只萌萌小番薯

通过$ _POST变量获取值-JavaScript:$("#registerButton").click(function(){    var cardsObj = {"idcards": [1,4,7,10,13,16,17,19,23,27,29,35,39,41,43,46,58,77,95,120]};    $.ajax({        type: 'POST',        contentType: "application/x-www-form-urlencoded; charset=UTF-8",        dataType : "json",        url: 'php_includes/register.php',        data: {cards: cardsObj},        success: function(data) {            console.log(data);        }    });});PHP:$jsonString = $_POST['cards'];$cardsJsonString = json_encode($jsonString);header('Content-Type: application/json');echo $cardsJsonString;要将JSON从JavaScript发送到PHP:    $.ajax({        type: 'POST',        contentType: "application/json",        dataType : "json",        url: 'php_includes/register.php',        data: {cards: cardsObj},        success: function(data) {            console.log(data);        }    });PHP:$jsonString = file_get_contents("php://input");$phpObject = json_decode($jsonString);$newJsonString = json_encode($phpObject);header('Content-Type: application/json');echo $newJsonString;

FFIVE

您不需要JSON.stringify(cards)。您可以直接发送卡而不是cardsJSON。$.ajax({            type: 'POST',             url: 'php_includes/register.php',            data: {cards: cards},            dataType: 'json'        });

绝地无双

您需要使用json_decode()的$freecards。$freecards = json_decode($freecards, true);
随时随地看视频慕课网APP
我要回答