使用jquery读取json数据

时间:2013-04-04 06:52:53

标签: jquery jsonp

我想从json数组中读取id和name。我编写了以下代码但是当我尝试使用parseJSON方法读取id时,它给了我undefined。任何人都可以告诉我如何阅读json数据。以下是我写的代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready( function() {
 // $("#request_content").click(function(){
    $('#time').html(new Date);
    $('#status').html('');
    $('#content').html('');
    var id = '';
    $.ajax({
      cache: false,
      url: $('#xhr_url').val()
    }).done(function(data, textStatus, jqXHR) { 
    //alert(data);     
      $('#status').html(textStatus);
      $('#content').html(JSON.stringify(data));

     var jsonp = JSON.stringify(data);
     var obj = $.parseJSON(jsonp);
      $.each(obj, function() {
      //alert("hi");
          id += this['Id'] + "<br/>";
          $('#content').html(id);
      });
      //$('#content').html(lang);
    }).fail(function(jqXHR, textStatus) {
      $('#status').html(textStatus);    
      $('#content').html('(failed)');
    })
 // });
});
</script>
<body>
  <input id='xhr_url' style='width:600px;' type='text' value='http://t2json.tgoservices.com/818746/PrinterManufacturers'/>

  <button id='request_content'>Request content</button>
  <fieldset><legend>Time:</legend>
    <div id='time'></div>
  </fieldset>
  <fieldset><legend>Status:</legend>  
    <div id='status'></div>
  </fieldset>
  <fieldset><legend>Content:</legend>

    <div id='content'></div>
  </fieldset>
</body>

请让我知道问题所在。

2 个答案:

答案 0 :(得分:0)

替换这行代码:

var jsonp = JSON.stringify(data);
var obj = $.parseJSON(jsonp);
  $.each(obj, function() {
  //alert("hi");
      id += this['Id'] + "<br/>";
      $('#content').html(id);
  });

有了这个:

$.each(data, function(idx, value){
    var items = value.PrinterManufacturers.Items;
    for(var a = 0; a < items.length; a++) {
       id += items[a].Id + '<br>';
    }
    $('#content').html(id);
});

答案 1 :(得分:0)

按以下方式更改您的每项功能

var id = "";
$.each(data.T2Json.PrinterManufacturers.Items, function() {
   id += this.Id + "<br/>";
   console.log(this.Id);
});

这是一个完整的工作示例http://jsfiddle.net/mayooresan/4eU4X/

此处您的服务返回JavaScript对象而不是JSON字符串。因此,如果您使用JSON.parse()解析它,它会给您错误。