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

时间:2019-04-15 08:57:14

标签: php jquery json ajax xmlhttprequest

我正在使用一个名为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对象相同的消息,而不是我要进入数据库的空白空间。

3 个答案:

答案 0 :(得分:0)

通过$ _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;

想要将JavaScript从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;

答案 1 :(得分:-1)

您需要在json_decode()上使用$freecards

$freecards = json_decode($freecards, true);

答案 2 :(得分:-1)

您不需要JSON.stringify(cards)。您可以直接发送 cards ,而不是 cardsJSON

$.ajax({
            type: 'POST', 
            url: 'php_includes/register.php',
            data: {cards: cards},
            dataType: 'json'
        });