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 массив значений, сформированный в нем? Если да - то с точки зрения синтаксиса как реализовать. |
|
Опишу ситуацию подробнее.
Вот содержимое пхп файла (к которому обращается аякс запрос): $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??? |
ОЙ блин, тяжелый случай.
Почитайте про 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 прочитал все давно. Просто ни в одном источнике было написано что return тоже работает. На практике же нет.....
И я так опнел что вы предлагаете работать со строкой. Щас попробую разобратся. |
вот простой пример 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 ":" "}, то как мне это нужно сделать ? |
Во-первых, не нужно использовать eval. Для разбора json есть специальный метод: JSON.parse. Например, такой код упадет с синтаксической ошибкой:
eval('{"type":"tel","subtype":"","contact":"123","ext ":" "}') Во-вторых, если запрос Цитата:
|
Цитата:
Т.е. в твоём случае так: alert(contacts[0].type); |
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 почему такое может быть? |
добавь
dataType: "json", |
Цитата:
|
Цитата:
Это вряд ли. Если вы сами собираетесь формировать JSON, значит нужно соблюдать соглашения. Самому же заниматься этим в рамках РНР/Javasript нет необходимости, и там, и там для этого уже есть готовое корректно выполняющее данную операцию. |
Часовой пояс GMT +3, время: 00:14. |