Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2019, 21:45   #1
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию Формат данных 'json' в ajax

Здравствуйте. Подскажите пожалуйста почему не выводятся массив, после перевода в формат json.
Есть три ссылки:
Код:
<a id="link_1" href="#" onclick="AddSpan(1); return false;">Один</a>
<a id="link_2" href="#" onclick="AddSpan(2); return false;">Два</a>
<a id="link_3" href="#" onclick="AddSpan(3); return false;">Три</a>
<hr>
<span id="outspan"></span>
Затем их перехватывает функция:
Код:
function AddSpan(ItemId) {
	console.log(ItemId);
	$.ajax({
           type:        'POST',
           url:         "handler.php",
           data:        {data: ItemId},
           dataType:    "json",
           success:      function(data){
                               $('#outspan').html(data);
		           }
        })
}
После чего в файле handler.php я создаю массив с ключом 'id' и значением, которое прислал ajax-скрипт и пытаюсь вернуть этот массив в формате json, для вывода в span:
Код:
if (isset($_POST['data'])){
$DataResult = array('id' => intval($_POST['data']));
echo json_encode($DataResult);
}else echo "Hello!";
Но данные не выводятся и ошибок ни php, ни js не выдаёт.
P.S.
Если я передаю просто id (не массив), то он выводится.
begovik вне форума Ответить с цитированием
Старый 05.03.2019, 23:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от begovik Посмотреть сообщение
Но данные не выводятся и ошибок ни php, ни js не выдаёт.
Вы возвращаете данные, массив вида
Цитата:
Код:
{"id":3}
что Вы ожидаете увидеть в $('#outspan').html(data); ?

тогда уже:
handler.php
Код:
<?php
if (isset($_POST['data'])){
	$DataResult = array('id' => intval($_POST['data']));
	exit(json_encode($DataResult));
}
else{
	$DataResult = array('id' => 'NO DATA!');
	exit(json_encode($DataResult));
}
?>
javascript:
Код:
function AddSpan(ItemId) {
	console.log(ItemId);
	$.ajax({
           type:        'POST',
           url:         "handler.php",
           data:        {data: ItemId},
           dataType:    "json",
           success:      function(data){
                               $('#outspan').html(data.id);
		           }
        })
}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2019, 23:23   #3
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

Здорово! Теперь id выводится, спасибо за помощь. Скажите а как вывести на экран само название ключа (id)?
begovik вне форума Ответить с цитированием
Старый 05.03.2019, 23:29   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от begovik Посмотреть сообщение
Скажите а как вывести на экран само название ключа (id)?
если правильно понял:
Код:
                               $('#outspan').html("id = "+data.id);
можно выделить тегами.
например,
Код:
                               $('#outspan').html("<b>id</b> = "+data.id);
так и выводите всё, что Вам нужно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2019, 23:56   #5
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

Нет, я имел в виду как можно вывести на экран список самих ключей, а не их значений. У меня здесь только один элемент массива и я знаю, что в нём есть ключ id, но если элементов много и я , к примеру, не знаю или не помню названия всех ключей, то как их вывести на экран, чтобы посмотреть какие ключи есть в массиве?
begovik вне форума Ответить с цитированием
Старый 06.03.2019, 08:30   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

если для отладочных целей - выведи в консоль, там и массивы и объекты норм показываются
Код:
console.log(data)
ADSoft вне форума Ответить с цитированием
Старый 06.03.2019, 15:53   #7
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

Блин, ответ настолько был перед глазами, что аж стыдно...
Спасибо вам, что помогли.
begovik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java+ajax(json req) mrprim JavaScript, Ajax 1 03.02.2017 12:31
$.ajax возвращает ошибку при чтении json Phantom JavaScript, Ajax 4 08.08.2013 00:40
формат json Glowworm JavaScript, Ajax 32 30.05.2013 23:55
JQuery + Json+ Ajax maomam JavaScript, Ajax 0 02.12.2012 22:32
Разбор JSON данных AndreyK Общие вопросы Delphi 0 29.10.2010 22:55