отправка обратно строки json с проблемой эха - PullRequest
1 голос
/ 07 декабря 2009

Я использую json_encode для отправки данных из php в jquery через ajax.

и я заметил, что jquery просто позволяет нам использовать ОДИН эхо в php.

если я использую echo json_encode ($ array); .... а затем еще один echo json_encode ($ array2); в тот же файл php, то он не будет работать.

или если я использую echo json_encode ($ array); а потом еще одно эхо "привет"; тогда он тоже перестает работать.

Я прав?

проблема в том, что когда я использую

$users = mysqli_fetch_assoc($login_user_result);

в ajax-файле php вместе с

echo json_encode($array);

это не работает. он отправляет массив $ правильно, но вместе с кучей другого кода из-за строки над ним.

но мне нужно использовать mysqli_fetch_assoc для получения данных из базы данных.

Что обойдется для этого?

РЕДАКТИРОВАТЬ: вот вызов ajax, который я использовал:

        $.ajax({
            url: "static/js/ajaxcall_login.php",
            type: "POST",
            data:
            {
                username:       $("#login_box .username").val(),
                password:       $("#login_box .password").val()
            },
            dataType: "json",
            success: function(data)
            {
                 ................
            }
        )};

Ответы [ 3 ]

2 голосов
/ 07 декабря 2009

Я не увидел ничего плохого в вашем запросе Ajax.

Вот тестовый код, и он отлично работал ...

Запрос

$(document).ready(function() {
    $.ajax({
        url: "json.php",
        type: "POST",
        dataType: "json",
        success: function(data) {
            alert(data);
        }
    });

});

Источник :

$arr1 = array(3.14, 123, "foo");
$arr2 = array("one", "two", "three");

$arr = array_merge($arr1, $arr2);

echo json_encode($arr);

Стоит отметить только одну вещь ...

Если вы установите dataType на json в запросе jQuery Ajax, respnse (echo) должен быть квалифицирован JSON. Вот почему вы не можете повторить другой строка вместе с JSON.

1 голос
/ 07 декабря 2009

JSON имеет специальный синтаксис, который будет поврежден, если вы выводите разные значения.

Например:

$a = array('a', 'b', 'c');
echo json_encode($a);

даст вам:

(['a','b','c'])

... который интерпретируется как массив в javascript. Если вы сделали

$a = array('a', 'b', 'c');
echo json_encode($a);
echo "Hello";

тогда это будет напечатано:

(['a','b','c'])hello

, что может вызвать проблемы с синтаксическим анализом.

Чтобы распечатать два массива, создайте структуру, которая содержит оба массива:

$a = array();
$b = array();
$c = array('first' => $a, 'second' => $b);
echo json_encode($c);
1 голос
/ 07 декабря 2009

если я использую echo json_encode ($ array); .... а потом еще одно эхо json_encode ($ array2); в тот же файл php, тогда он не будет работать.

Вам необходимо объединить буксирные массивы до кодирования json.

Я заметил, что JQuery просто позволяет нам использовать один эхо в php.

Неверно, если вы скачаете и отметите демонстрационный модуль jQuery Autocomplete , вы увидите, что внутри цикла используется многократное эхо.

Можете ли вы показать свой код JQuery? Похоже, вы неправильно определили тип данных в вашем запросе Ajax . Пожалуйста, проверьте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...