2012-03-08 111 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打開的彈出窗口,以JSON格式顯示檢索到的數據。我需要能夠獲取返回的數據並顯示它!簡單的權利?請幫忙!

回答

1

如果我正在讀你的問題,你返回的是一個JSON格式的字符串,而不是一個實際的對象。如果是這種情況,您需要使用JSON.parse()方法將其變爲可訪問對象:

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

謝謝。這正是我需要的。 – 2012-03-08 18:07:55

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

謝謝!所提供的鏈接非常豐富。 – 2012-03-08 18:08:14