вернуть несколько значений из PHP в функцию JS (AJAX / SQL) - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу иметь что-то вроде небольшой поисковой системы для раздела FAQ на моем сайте. Все, что он делает - это ищет в SLQ_DB термин после нажатия кнопки.

Я хочу вывести вопрос и ответы в двух отдельных разделах. Поэтому у меня есть $ data и $ data1, которые принадлежат div.

$('input#name-submit').on('click',function()
{
    var name = $('input#name').val();
    //alert(name);
    if($.trim(name) != "")
    {
        $.post('ajax/name.php',{name:name},function(data, data1)
            {
                $('div#name-data').html(data);
                alert(answer);
                $('div#name-data1').html(data1);

            });
    }
});

Но когда я нажимаю Enter, второй div показывает "успех". Но в первом есть данные и данные1. Когда я записываю функцию (data1, data) в файл js, data1 содержит всю информацию, а данные - это просто «успех».

Что здесь происходит?

1 Ответ

0 голосов
/ 05 ноября 2018

Функция echo в PHP выводит содержимое переменной в тело ответа. Это тело является строкой, которую получает ваше веб-приложение.

Допустим, у вас есть такой код:

<?php
$var1 = "hello";
$var2 = "world";
echo $var1;
echo $var2;
?>

Полученное тело ответа будет выглядеть так: helloworld.

Теперь предположим, что это ваш код JS:

$.post('ajax/name.php',{name:name},function(data) {
    console.log(data); // "helloworld"
});

jQuery передает тело ответа переменной данных, которая теперь содержит heloworld.

Вам нужно как-то разделить отдельные переменные внутри тела ответа, например, используя JSON.

Первый шаг заключается в кодировании данных на сервере, это так просто:

<?php
echo json_encode(["var1"=>$var1, "var2"=>$var2]);
?>

Это создаст тело ответа, похожее на это: {"var1":"hello","var2":"world"}.

Следующий логический шаг - декодировать этот JSON с помощью JavaScript:

$.post('ajax/name.php',{name:name},function(data) {
    var res = JSON.parse(data);
    console.log(res.var1); // "hello"
    console.log(res.var2); // "world"
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...