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

  • Автор темы Автор темы Avenus
  • Дата начала Дата начала

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('');
Спасибо!
 
Вообще, я конечно не знаю что такое Na, то ответ от сервера - вполне себе JSON :) об этом говорит и eval :)

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

Правда else часть твоих операторов все равно не выолнить без полного перебора. Ну могу лишь посоветовать попробовать цикл index от "A" до "X" и делать в теле
if(r["id"+index]) $('#id'+index).html(r.idA);
else $('#id'+index).html('');
 
Adelf
хз, я привык, что в json параметры заключены в двойные кавычки.
так или иначе, как это отменяет мой совет с type + ртфм? :-)
 
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:'');
});
 
Его же нельзя указывать в разных частях скрипта разным.
Или можно?
Можно и даже нужно :) Если ты отдаешь JSON - значит должно быть JSON. А jQuery кстати вообще все равно что там в хедере. Если ты его убедишь что там JSON - он поверит.
 
Adelf, это JSON, я понимаю.
Но только теперь я понимаю, что jQuery все равно, что указано в типе документа...
 
Сверху