AJAX POST отправка пустого пространства вместо объекта JSON - PullRequest
2 голосов
/ 15 апреля 2019

Я использую файл PHP с именем register.php для регистрации новых пользователей в моей базе данных с некоторыми данными, поступающими из формы регистрации, однако последние два поля данных в моей базе данных должны быть двумя объектами JSON по умолчанию,Для этого я создаю переменную в своем 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}')";

Я ожидаю получить тот же объект JSON, что и яm в начале файла JS, а не в пустом месте, которое я получаю в базу данных.

Ответы [ 3 ]

0 голосов
/ 15 апреля 2019

Вам не нужно JSON.stringify (карты). Вы можете напрямую отправить карточек вместо карточекJSON .

$.ajax({
            type: 'POST', 
            url: 'php_includes/register.php',
            data: {cards: cards},
            dataType: 'json'
        });
0 голосов
/ 15 апреля 2019

Получить значения через переменную $ _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;
0 голосов
/ 15 апреля 2019

Вам нужно использовать json_decode() на $freecards.

$freecards = json_decode($freecards, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...