Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.06.2014, 22:02
Новичок на форуме
Отправить личное сообщение для AlexBabievCom Посмотреть профиль Найти все сообщения от AlexBabievCom
 
Регистрация: 01.06.2014
Сообщений: 4

Сообщение от walik Посмотреть сообщение
вот простой пример JSON:
var str = '({"name":"Valik","age":"20","country":"Moldova"})'; // К примеру строка которая приходит от сервера
var user = eval(str); // Превращаем так сказать строку в объект
alert(user.name+', '+user.age+' лет, '+user.country); // Обращаемся к свойствам объекта
Сообщение от Sweet Посмотреть сообщение
В js так работают с объектами. А с массивами - contacts[индекс].
Т.е. в твоём случае так:
alert(contacts[0].type);
Огромное спасибо за помощь!
Ответить с цитированием
  #12 (permalink)  
Старый 01.06.2014, 22:02
Новичок на форуме
Отправить личное сообщение для AlexBabievCom Посмотреть профиль Найти все сообщения от AlexBabievCom
 
Регистрация: 01.06.2014
Сообщений: 4

Сообщение от walik Посмотреть сообщение
вот простой пример JSON:
var str = '({"name":"Valik","age":"20","country":"Moldova"})'; // К примеру строка которая приходит от сервера
var user = eval(str); // Превращаем так сказать строку в объект
alert(user.name+', '+user.age+' лет, '+user.country); // Обращаемся к свойствам объекта
Сообщение от Poznakomlus Посмотреть сообщение
var data = [{
    "type": "email",
    "subtype": "",
    "contact": "9651139 383 @mail.ru",
    "ext": ""
  }, {
    "type": "email",
    "subtype": null,
    "contact": "alex@ bab iev.com",
    "ext": ""
  }, {
    "type": "tel",
    "subtype": "",
    "contact": "123",
    "ext ": " "
  }, {
    "type": "tel",
    "subtype": "",
    "contact": "123",
    "ext ": " "
  }];

  for (var el, i = 0; i < data.length; i++) {
    el = data[i];
    alert(el.type + "\r\n" + el.subtype + "\r\n" + el.contact + "\r\n" + el.ext);
  }
Огромное спасибо за помощь!
Ответить с цитированием
  #13 (permalink)  
Старый 01.06.2014, 22:28
Новичок на форуме
Отправить личное сообщение для AlexBabievCom Посмотреть профиль Найти все сообщения от AlexBabievCom
 
Регистрация: 01.06.2014
Сообщений: 4

Сообщение от Poznakomlus Посмотреть сообщение
var data = [{
    "type": "email",
    "subtype": "",
    "contact": "9651139 383 @mail.ru",
    "ext": ""
  }, {
    "type": "email",
    "subtype": null,
    "contact": "alex@ bab iev.com",
    "ext": ""
  }, {
    "type": "tel",
    "subtype": "",
    "contact": "123",
    "ext ": " "
  }, {
    "type": "tel",
    "subtype": "",
    "contact": "123",
    "ext ": " "
  }];

  for (var el, i = 0; i < data.length; i++) {
    el = data[i];
    alert(el.type + "\r\n" + el.subtype + "\r\n" + el.contact + "\r\n" + el.ext);
  }
Интересно... когда я запускаю этот код, то все ок. Когда я делаю так:

ajax({
		   url:"/contacts.php?addrbook="+addrbook_uid,
		   method:"POST",
		   data:
		   {
		   		//first_area:document.getElementById("area_1").value,
		   		//second_area:document.getElementById("area_2").value
		  },
		   success: 
		   	function(data){
		   		//document.getElementById("status").innerHTML=data; 
		   		alert(data);
		   		for (var el, i = 0; i < data.length; i++) {
					el = data[i];
					alert(el.type + "\r\n" + el.subtype + "\r\n" + el.contact + "\r\n" + el.ext);
  				}
		  	}
		});


то получается вместо значений выводит UNDEFINED.

функция ajax тут http://i.babiev.com/js/ajax.js

почему такое может быть?
Ответить с цитированием
  #14 (permalink)  
Старый 01.06.2014, 22:40
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

добавь

dataType: "json",
Ответить с цитированием
  #15 (permalink)  
Старый 15.06.2016, 00:48
Интересующийся
Отправить личное сообщение для reno4 Посмотреть профиль Найти все сообщения от reno4
 
Регистрация: 11.09.2012
Сообщений: 11

Сообщение от walik Посмотреть сообщение
ОЙ блин, тяжелый случай.
Почитайте про AJAX лучше.
JS получает то что выводится (echo, print, printf и т.д.) а не return.
$str = '"dav_vod_k_1":{"cvet":"'.dav_vod_k_1($row1, 1).'","znach":"'.dav_vod_k_1($row1, 0).'"},';
$str .= '"tem_ugaz_1":{"cvet": "'.tem_ugaz_1($row1, 1).'","znach":"'.tem_ugaz_1($row1, 0).'"}';
echo '({'.$str.'})';

А в JS уже пишите:
var obj = eval(data);

и обращаетесь так:
obj.dav_vod_k_1.cvet

Как то так короче.
Но почитайте получше про AJAX
Ну а потом и про JSON (ссылка выше)
Мда. Красиво сказано. Но работать не будет. Тем более, переменную, которая объявлена внутри AJAX, снаружи вообще никто не увидит. А те переменные, которые объявлены снаружи, внутри AJAX модифицировать бесполезно - снаружи эти изменения тоже никто не увидит!
Ответить с цитированием
  #16 (permalink)  
Старый 15.06.2016, 05:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от reno4
Красиво сказано

Это вряд ли. Если вы сами собираетесь формировать JSON, значит нужно соблюдать соглашения. Самому же заниматься этим в рамках РНР/Javasript нет необходимости, и там, и там для этого уже есть готовое корректно выполняющее данную операцию.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax запрос. Возврат массива. Rinas jQuery 5 09.04.2011 18:58
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23
Ajax разбор метода mycoding jQuery 14 21.05.2010 10:57
jQuery Ajax Rater Plugin и массив POST - Нужна помощь TROODON jQuery 12 30.12.2009 22:44
AJAX. Возвращение массива HTML Neil AJAX и COMET 9 12.02.2009 16:00