Данные пусты при передаче переменной из JS в PHP с помощью Ajax

#javascript #php #jquery #ajax #wordpress

#javascript #php #jquery #ajax #wordpress

Вопрос:

Я пытаюсь передать простую строковую переменную с событием onclick, запрос выполнен успешно, но я получаю пустой ответ на консоли, и xvar переменная не проходит, поэтому я получаю тег «НЕТ ДАННЫХ» p . Я впервые использую Ajax, поэтому я постарался сделать его очень простым для запуска. Вот мой код:

JS

     var xvar = 'D';
    $('.test').click( () => {
        $.ajax({
            data: { xvar : xvar },
            type: "POST",
            url: 'test.php', 
            success: function(data, textStatus, XMLHttpRequest)
            {
                console.log('Success: ' data)
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                console.log("The request failed." errorThrown);
            }
        });
    });
 

test.PHP

 $xvar = (isset($_POST['xvar'])) ? $_POST['xvar'] : '<p>NO DATA</p>';
echo $xvar;
 

Я использую jQuery 3.5.1, который входит в состав WordPress. Я буду признателен за любую обратную связь.

РЕДАКТИРОВАТЬ Мне удалось получить ответ test.php , как показано здесь:

Но я, когда пытаюсь отобразить значение с print_r помощью, не отображается.

 $res = $_POST;
print_r($res);
 

Комментарии:

1. Я не могу воспроизвести эту проблему. Можете ли вы проверить точную версию jQuery, которая включена в комплект поставки? Вы должны быть в состоянии увидеть это в исходном коде страницы. Примечание: нет необходимости определять ключ, если у него то же имя, что и у вашей переменной. Простого указания data: { xvar } должно быть достаточно.

2. Вы действительно можете просто определить data: { xvar } , но это не рекомендуется, потому что в некоторых браузерах это приводит к ожидаемой ошибке «‘:'», например, IE.

3. Это jQuery 1.12.4

4. Используйте вкладку Network инструмента разработчика браузера, чтобы просмотреть запрос Ajax и его необработанный ответ. Что вы видите?

5. Я получил этот ответ {"wp-auth-check":true,"server_time":1608029785} от admin-ajax.php . «В этом запросе нет доступных данных» из test.php .

Ответ №1:

В data вашем Ajax попробуйте добавить кавычки в ключ данных. Вот так:

 data: { "xvar" : xvar },
 

Комментарии:

1. Это не должно повлиять на результат.