Я присвоил JSON-результат от php переменной javascript. Возвращенный результат выглядит, как показано ниже, но он дает мне undefined undefined

[{"a":"2","u":"jamesoduro","l":"Oduro","f":"James"},{"a":"5","u":"deary.grace","l":"Grace","f":"Dear"}]

Я просто знаю, что это похоже на массив javascript с двумя объектами. Я пытаюсь получить доступ к данным внутри объектов, но безрезультатно. Ниже скрипт:

PHP

    <?php   

//fetch  online users
$array  = array();
$sql    = "SELECT id as a,username as u, lastname as l,firstname as f FROM users WHERE active =1 limit 2";
$q      = mysqli_query($dbc_conn,$sql);

while($row  = mysqli_fetch_assoc($q)){
    $array[]    = $row; 

}

$json = json_encode($array);    
echo $json;


?>

JQUERY

$(document).ready(function(){

    //checking online users
    setTimeout(function(){
    $.ajax({
        url:"testing.php",
        type:"post",
        success:function(response){

            var array = response;
            console.log(array[0].f +" "+ array[0].l);
        }
    });
},200);

});

Пожалуйста, в чем может быть проблема ?? Спасибо

3
lernyoung 8 Сен 2016 в 16:20

3 ответа

Лучший ответ

Попробуйте десериализовать ответ:

var array = JSON.parse(response);

ПОЯСНЕНИЕ

Ответ, который вы получаете от вызова ajax, имеет тип строка , поэтому вам необходимо преобразовать его в объект . Это то, что делает метод JSON.parse (): он анализирует строку JSON и создает объект, который эта строка представляет, в соответствии с определенными правилами (проанализированная строка должна находиться в действительный формат JSON ).

1
kapantzak 8 Сен 2016 в 13:31

Сохраняйте аккуратный и чистый код PHP-скрипта на стороне сервера

  1. Начать блок PHP с первого символа первой строки.
  2. Не закрывайте блок php, если нет вывода в формате HTML.
  3. Используйте функцию ob_clean () перед выводом эха, если вы находитесь в режиме разработчика и включена ошибка отображения.

Например

ob_clean();
echo json_encode($array);

На стороне клиента, если вы получаете ответ JSON в ajax, передайте dataType:'json' в опции ajax.

$.ajax({
    url:"testing.php",
    type:"post",
    dataType:"json",
    success:function(response){
        console.log(response[0].f +" "+ response[0].l);
    }
});
1
Amar Singh 8 Сен 2016 в 13:31
 $.ajax({
    url:"testing.php",
    type:"post",
    success:function(response){

        var array = JSON.parse(response);
        console.log(array[0].f +" "+ array[0].l);
    }
});

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

Вы должны научиться отлаживать свой код, чтобы понять, что не так, я полагаю.

2
passion 8 Сен 2016 в 13:22