Я присвоил 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 ответа
Попробуйте десериализовать ответ:
var array = JSON.parse(response);
ПОЯСНЕНИЕ
Ответ, который вы получаете от вызова ajax, имеет тип строка , поэтому вам необходимо преобразовать его в объект . Это то, что делает метод JSON.parse (): он анализирует строку JSON и создает объект, который эта строка представляет, в соответствии с определенными правилами (проанализированная строка должна находиться в действительный формат JSON ).
Сохраняйте аккуратный и чистый код PHP-скрипта на стороне сервера
- Начать блок PHP с первого символа первой строки.
- Не закрывайте блок php, если нет вывода в формате HTML.
- Используйте функцию 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);
}
});
$.ajax({
url:"testing.php",
type:"post",
success:function(response){
var array = JSON.parse(response);
console.log(array[0].f +" "+ array[0].l);
}
});
Вы получаете строку из php, вам нужно превратить строку в объект json.
Вы должны научиться отлаживать свой код, чтобы понять, что не так, я полагаю.
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.