2012-02-09 73 views
0

我试图迭代通过从我的代码隐藏生成的JSON响应。我的代码返回的字符串是:Jquery/JSON遇到问题

[{"Symbol":"^GDAXI","Last":"6787.49","Change":"+38.73"},{"Symbol":"^FTSE","Last":"5894.65","Change":"+18.72"}] 

我想通过这个使用迭代:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
<script type="text/javascript" src="/Scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "Stocks.asmx/GetQuote", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (stocks) { 
       $(stocks).each(function (index) { 
        $('#stocks').append("<li>" + this.Symbol + "</li>"); 
       });      
      } 
     }); 
    }); 
</script> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
<p> 
    <ul id="stocks"></ul> 
</p> 
</asp:Content> 

所有我得到的是与“未定义”的李项。

我哪里错了?

+0

您的ASMX服务定义为返回JSON而不是XML吗? – 2012-02-09 12:01:28

+0

你想要哪个符号?我没有看到代码中定义的符号。 – knub 2012-02-09 12:03:26

+0

@knub检查JSON? – Jivings 2012-02-09 12:08:36

回答

2

.each()看起来不正确。

尝试:

$(stocks).each(function (index, value) { 
    $('#stocks').append("<li>" + value.Symbol + "</li>"); 
}); 
+0

谢谢,但没有运气:-) 我意识到我应该使用: $。每个(股票,函数(股票){ $( '#股票')追加( “

  • ” +股票。符号+“
  • ”); }); 但这不工作.. – alimac83 2012-02-09 12:11:55

    +0

    你可以检查股票对象,看看它是否看起来如预期? 'console.log(股票)' – Jivings 2012-02-09 12:14:47

    +0

    刚才看看它似乎股票价值是整个JSON字符串..东西非常错误:-S – alimac83 2012-02-09 12:27:20

    0

    传递给回调 '每个' 接收两个参数。你必须这样写:

    $(stocks).each(function(index, data){ console.log(data.Symbol); });