Как вывести данные из пришедшего по AJAX-запросу массива?

Есть такая функция

function sendSMS() {
		$(".sms-result").html( "Отправляем SMS..." );
		$.post("/sms.php", {
				phone:   $("#sms_phone").val(), 
				text:    $("#sms_text").html()
			},
			function(data){
				$(".sms-result").html( data['description'] );
			}
		);
		return false;
	}

// ответ
Array
(
    [code] => 100
    [description] => Сообщение принято.
)


Как вывести содержимое description? Почему-то $(".sms-result").html( data['description'] ) не срабатывает.
  • Вопрос задан
  • 2994 просмотра
Решения вопроса 1
thewind
@thewind
php программист, front / backend developer
Может надо data.description ? Это если у вас ответ приходит в формате объекта. А если у вас просто приходит строка в том виде, который вы привели как "ответ", то это просто строка, а не массив. Изучайте типы объектов.

Как вариант, в $.post добавьте тип возвращаемых данных json (после указания callback функции), а в скрипте, который генерирует ответ выводите в output не просто массив (через print_r или что у вас там), а json от нужного массива.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
zo0m
@zo0m
full stack developer
Замените:
$(".sms-result").html( data['description'] );

на
$(".sms-result").html( JSON.stringify(data));
а лучше
console.log(JSON.stringify(data));

и расскажите что он выводит
Ответ написан
Проверьте под отладчиком что вообще помещается в data при ответе?
> $(".sms-result").html( data['description'] ); // Брекпоинт сюда
Если это массив у него не может быть ключ строкой. Следовательно нельзя обратиться data["blabla"], только data[0] data[1] и тд. Если объект то можно data["blabla"] или data.blabla без разницы.
Если () круглые скобки то объект. Если [] квадратные то массив.
Скорее всего вы что-то не то возвращаете сервером.
Могу предположить что у вас скорее будет верным вариант data[0].description
Ответ написан
Symphony
@Symphony Куратор тега JavaScript
eval*ом продебажьте, вам приходит строка.
Лучше Жисон отправлять с бекенда
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы