2012-03-08 6 views
0

Я успешно вернул объект/массив JSON (не слишком хорошо с терминологией), используя приведенный ниже код.Преобразование массива JSON в html

$(function(){ 
    $("#buildForm").click(function(e){ 
     e.preventDefault(); 
     var frm = $(document.buildForm); 
     var dat = JSON.stringify(frm.serializeArray()); 
     $.post(frm.attr("action"), {data:dat}, function(response) 
     { 
      var $dialog = $('<div></div>') 
      .html(response) 
      .dialog({ 
        autoOpen: false, 
        title: 'Build', 
        modal: true, 
        height: 400 
      }); 
      $dialog.dialog('open'); 

      // prevent the default action, e.g., following a link 
      return false; 
     });  
}); 
}); 

возвращает

{"str_id":"1","str_name":"TC","tier_id":"1","buy_gold":"50000","buy_mana":"10000","res_build":"0","res_active":"0","res_owned":"0","timebuildmins":"500","timecollectmins":"30","timeminsformiss":"0","goldcollected":"1000","str_imageloc":"..\/img\/structures\/tc.png"} 

Я не знаю много JS, но им пытаются учиться на практике. К сожалению, я не могу понять, как просто отображать, например, только «str_name».

Как вы можете видеть, у меня есть всплывающее окно из jquery ui open для отображения извлеченных данных в формате JSON. Мне нужно иметь возможность принимать бит возвращаемых данных и отображать их! Просто так? Пожалуйста помоги!

ответ

1

Если я правильно прочитал ваш вопрос, то, что вы вернули, было строкой в ​​формате JSON, а не фактическим объектом. Если это так, то вы будете хотеть использовать метод JSON.parse(), чтобы превратить это в доступный объект:

ret = JSON.parse(response); 
// ret.str_name now returns 'TC' 
+0

Спасибо. Это именно то, что мне нужно. –

2

Вы можете использовать response.str_name для доступа к значению члена str_name. Тогда будет выглядеть ваш код;

var $dialog = $('<div></div>') 
.html(response.str_name) 
.dialog({ 
     autoOpen: false, 
     title: 'Build', 
     modal: true, 
     height: 400 
}); 
$dialog.dialog('open'); 

Что вы были раньше (.html("response")) означало, что вы были настройки HTML в строки "ответ".

Чтобы убрать вас по вашей терминологии; то, что вы получили с сервера, было бы форматированной строкой JSON (например, строкой, которая была действительной JSON-нотацией). Традиционно будет разбираться строка JSON, чтобы дать вам объект JavaScript для управления. Однако jQuery разумно обнаружил ответ JSON и уже проанализировал его в объект для вас; следовательно, то, что вы получаете в параметре response, является стандартным объектом JavaScript. Если это все еще запутывает, вы можете найти следующее сообщение полезным; Javascript object Vs JSON

+0

Спасибо! предоставленная связь очень информативна. –

Смежные вопросы