2013-04-04 5 views
0

Я хочу прочитать идентификатор и имя из массива json. Я написал следующий код, но он дает мне undefined, когда я пытался читать идентификатор, используя метод parseJSON. Может кто-нибудь, пожалуйста, скажите мне, как читать данные json. Ниже приведен код, который я написали:читать данные json с помощью jquery

<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> 

Пожалуйста, дайте мне знать, в чем проблема.

+0

Покажите нам строку JSON. И почему вы строгаете и разбираете «данные» в двух последовательных строках? – freakish

ответ

0

Измените каждую функцию, как показано ниже

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

Вот полный рабочий пример http://jsfiddle.net/mayooresan/4eU4X/

Здесь ваша служба возвращает объекты JavaScript вместо JSON String. поэтому, если вы проанализируете его с помощью JSON.parse(), это даст вам ошибку.

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); 
}); 
Смежные вопросы