Автоматический разбор ответа от сервера

Avenus

Under Glory Yield
Автоматический разбор ответа от сервера

Привет всем! :)

Получаю ответ от сервера:
PHP:
{idA:Na, idB:Nb, ..., idX:Nx}
// где: Na...Nx - числовые или строковые значения
И разбираю в jQuery:
PHP:
$.get(url,function(text){
 var r=eval("("+text+")");
 // в r также будут r.idA, r.idB, ..., r.idX 
 // мне нужно передать их значения DOM элементам с ID в соответствии
 // с полученными idA, idB, ..., idX
 },'text');
}
Подскажите, пожалуйста, как автоматически разобрать такую конструкцию,
чтобы не писать много такого рода строк:
PHP:
if(r.idA) $('#idA').html(r.idA);
else  $('#idA').html('');
...
if(r.idX) $('#idX').html(r.idX);
else  $('#idX').html('');
Спасибо!
 

Adelf

Administrator
Команда форума
Вообще, я конечно не знаю что такое Na, то ответ от сервера - вполне себе JSON :) об этом говорит и eval :)

Поэтому скорее всего тут поможет цикл.. for(i in r)

Правда else часть твоих операторов все равно не выолнить без полного перебора. Ну могу лишь посоветовать попробовать цикл index от "A" до "X" и делать в теле
if(r["id"+index]) $('#id'+index).html(r.idA);
else $('#id'+index).html('');
 

zerkms

TDD infected
Команда форума
Adelf
хз, я привык, что в json параметры заключены в двойные кавычки.
так или иначе, как это отменяет мой совет с type + ртфм? :)
 

Avenus

Under Glory Yield
zerkms, если передавать JSON, то нужно указать тип документа:
PHP:
header('Content-type:application/json;charset=utf-8');
Но у меня в PHP-скрипте на сервере указан тип:
PHP:
header('Content-type:text/html;charset=utf-8');
Его же нельзя указывать в разных частях скрипта разным.
Или можно?

Я пока сделал так, спасибо Adelf:
PHP:
$.each(r,function(i,item){
$('#'+i).html(item?item:'');
});
 

Adelf

Administrator
Команда форума
Его же нельзя указывать в разных частях скрипта разным.
Или можно?
Можно и даже нужно :) Если ты отдаешь JSON - значит должно быть JSON. А jQuery кстати вообще все равно что там в хедере. Если ты его убедишь что там JSON - он поверит.
 

Avenus

Under Glory Yield
Adelf, это JSON, я понимаю.
Но только теперь я понимаю, что jQuery все равно, что указано в типе документа...
 
Сверху