2010-04-21 20 views
1

我通過webservice傳遞了一些JSON到我的頁面。我使用JSON.NET將XML轉換爲JSON。 JSON輸出對我來說看起來不錯,但我無法訪問響應中的一些項目。我不確定它爲什麼不起作用。我正在使用jQuery來讀取響應並進行web服務調用。甚至當我試着去閱讀它說的數組的長度「未定義」無法從XML轉換得到JSON的值

function GetFeed(){ 

     document.getElementById("marq").innerHTML = ''; 

     $.ajax({ 
      type: "POST", 
      url: "ticker.asmx/GetStockTicker", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(response) {     

      var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 

      for (var i = 0; i < obj.length; i++) { 
       $('#marq').html(obj[i].person); 
      }    

      } 
     }); 

    } 

這是我的迴應的複製和粘貼,因爲它出現在螢火蟲:

{"d":"{\"?xml\":{\"@version\":\"1.0\",\"@standalone\":\"no\"},\"root\":{\"person\":[{\"@id\":\"1\",\"name\":\"Alan\",\"url\":\"http://www.google.com\"},{\"@id\":\"2\",\"name\":\"Louis\",\"url\":\"http://www.yahoo.com\"}]}}"} 
+0

你有沒有試過做一個JSON.Parse來獲得一個Javascript對象? Douglas Crockfords JSON解析器(json.org/json2.js)適合我。 – 2010-04-21 14:53:55

回答

2

您應該能夠讀取響應,而不調用三元運算符......無論如何,如果你想遍歷數組的人,你應該針對response.d.root.person對象,而不是它的父:

for (var i = 0; i < response.d.root.person.length; i++) { 
    $('#marq').html(d.root.person[i].name //.url, ...); 
} 
0

我知道,JQ uery的Ajax完成時有問題,請求完成後總會被調用兩次。我不確定這是否成功。