2012-03-08 77 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