2013-08-05 114 views
0

我有一個來自web方法的json輸出。Json輸出在渲染時返回'undefined'

{"d":"[{\"id\":1,\"username\":\"deepak_nhm\",\"companyid\":4,\"MaxEQuizScoreAvailable\":600,\"EQuizzesUserScoreTaken\":100,\"EQuizzesUserTaken\":1,\"firstname\":\"Deepak\",\"lastname\":\"Kerai\",\"avatarsmall\":\"/images_webdev/profile/634596544067649211654527189.jpeg\",\"company\":\"Orange\",\"CompanyRank\":1,\"OverAllRank\":3},{\"id\":2,\"username\":\"Mona_Co\",\"companyid\":1,\"MaxEQuizScoreAvailable\":600,\"EQuizzesUserScoreTaken\":100,\"EQuizzesUserTaken\":1,\"firstname\":\"Mona\",\"lastname\":\"Sadhu\",\"avatarsmall\":\"/images_webdev/profile/AspNetForumAvatarguy35.jpg\",\"company\":\"3 Retail\",\"CompanyRank\":1,\"OverAllRank\":3}]"} 

我如何呈現上面的輸出,因爲下面的嘗試只返回'undefined')?

<script type="text/javascript"> 
    $(document).ready(function() { 
     GetProducts(); 
    }); 
    function GetProducts() { 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/GetContestants", 
      data: '{}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 

       // Replace the ul's content with the page method's return. 
       var invoices = msg.hasOwnProperty("d") ? msg.d : msg; 
       var invoicesInList = []; 
       for (var i = 0; i < invoices.length; i++) { 
        invoicesInList.push("<li>" + invoices[i]["username"] + "</li>"); 
        //console.log(msg.length); 
       } 
       $(invoicesInList.join("")).hide().appendTo("#ProductsList").fadeIn("slow"); 
      } 
     }); 
    } 
</script> 

在此先感謝。

+2

的JSON似乎是雙重編碼。不要試圖讀取格式不正確的JSON,而應修復創建它的服務器端代碼。 – JJJ

回答

1

msg.d實際上是JSON,所以你必須將其解碼使用它作爲一個對象,像

var invoices = msg.hasOwnProperty("d") ? JSON.parse(msg.d) : msg; 
+0

更好,修復外面的json以免包含json –