23.04.2011, 15:49
|
Аспирант
|
|
Регистрация: 27.03.2011
Сообщений: 75
|
|
AJAX возвращение массива
Вот у меня есть аякс запрос:
setInterval(function() {
$.ajax({
type: "POST",
url: "/mnemo_1.php",
data: "cvet=dav_vod_k_1",
dataType: "text",
async: false,
success: function (data){color = data;},
error: function(){alert('Problem');}
}).responseText;
}, 1000);
Возможно ли в этом запросе получать из файла php массив значений, сформированный в нем? Если да - то с точки зрения синтаксиса как реализовать.
|
|
23.04.2011, 19:14
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
23.04.2011, 19:21
|
Аспирант
|
|
Регистрация: 27.03.2011
Сообщений: 75
|
|
Опишу ситуацию подробнее.
Вот содержимое пхп файла (к которому обращается аякс запрос):
$MASSIV["dav_vod_k_1"] = array("cvet"=>dav_vod_k_1($row1, 1), "znach"=>dav_vod_k_1($row1, 0));
$MASSIV["tem_ugaz_1"] = array("cvet"=>tem_ugaz_1($row1, 1), "znach"=>tem_ugaz_1($row1, 0));
return $MASSIV[];
То-есть пхп файл возвращает массив.
Этот массив передается соответственно сюда:
setInterval(function() {
$.ajax({
type: "POST",
url: "/mnemo_1.php",
data: "cvet=dav_vod_k_1",
dataType: "text",
async: false,
success: function (data){color = data;},
error: function(){alert('Problem');}
}).responseText;
}, 1000);
То-есть в переменную data. Так вот как с ним работать дальше в JS???
|
|
23.04.2011, 19:30
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
ОЙ блин, тяжелый случай.
Почитайте про 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 (ссылка выше)
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
23.04.2011, 21:24
|
Аспирант
|
|
Регистрация: 27.03.2011
Сообщений: 75
|
|
про ajax прочитал все давно. Просто ни в одном источнике было написано что return тоже работает. На практике же нет.....
И я так опнел что вы предлагаете работать со строкой. Щас попробую разобратся.
|
|
23.04.2011, 21:32
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
вот простой пример JSON:
var str = '({"name":"Valik","age":"20","country":"Moldova"})'; // К примеру строка которая приходит от сервера
var user = eval(str); // Превращаем так сказать строку в объект
alert(user.name+', '+user.age+' лет, '+user.country); // Обращаемся к свойствам объекта
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
01.06.2014, 18:45
|
Новичок на форуме
|
|
Регистрация: 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); // Обращаемся к свойствам объекта
|
Здравствуйте.
У меня возвращается массив в виде JSON:
[
{"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 ":" "}
]
Я его обрабатываю так: var contacts = eval(str)
Попробовал по аналогии обратиться к значениям так alert(contacts.type);
Но я получаю undefined. Массим многомерный. Обычно с массивами я работаю так contacts[ключ][ключ], но с JS имею дело крайне редко и не могу понять как надо работать с объектами.
Подскажите как обращаться к этим элементам?
Например, если я хочу обратиться к этим значениям: {"type":"tel","subtype":"","contact":"123","ext ":" "}, то как мне это нужно сделать ?
|
|
01.06.2014, 18:57
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Во-первых, не нужно использовать eval. Для разбора json есть специальный метод: JSON.parse. Например, такой код упадет с синтаксической ошибкой:
eval('{"type":"tel","subtype":"","contact":"123","ext ":" "}')
Во-вторых, если запрос
Сообщение от AlexBabievCom
|
возвращается массив
|
, то и перебирай его как массив: либо в цикле for, либо с помощью метода .forEach.
|
|
01.06.2014, 18:59
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Сообщение от AlexBabievCom
|
Обычно с массивами я работаю так contacts[ключ][ключ]
|
В js так работают с объектами. А с массивами - contacts[индекс].
Т.е. в твоём случае так:
alert(contacts[0].type);
|
|
01.06.2014, 19:00
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
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);
}
|
|
|
|