jquery
  • jsonp
  • 2013-04-04 55 views 0 likes 
    0

    我想從json數組中讀取id和名稱。我寫了下面的代碼,但是當我嘗試使用parseJSON方法讀取id時,它給了我未定義的代碼。任何人都可以告訴我如何閱讀json數據。以下是我寫的代碼:使用jquery讀取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> 
    

    請讓我知道問題是什麼。

    +0

    向我們顯示JSON字符串。爲什麼你要連續兩行對數據進行串聯和解析? – freakish 2013-04-04 07:41:10

    回答

    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()解析它會給你錯誤。

    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); 
    }); 
    
    相關問題