2012-01-26 18 views
2

私はJQuery/JSONを初めて使用しています。私はMVCアクションメソッドの1つからJSONオブジェクトをクライアント側に返して、画面に表示しようとしています。私はリファレンスとして、このチュートリアルを使用しているjson object from c#asp.net mvcは返されません

:ここhttp://www.asp.net/ajaxlibrary/jquery_json_data_from_controller.ashx

は私のアクションメソッドです:

[HttpPost] 
public ActionResult GetStock() 
{ 
    IStockService service = new DummyStockService(); 
    return Json(service.GetStock()); 
} 

証券は、昔ながらのC#です(GetStock()は、タイプ在庫のリストを返します。 2つのプロパティの文字列の説明と小数価格のオブジェクト)

そして、私のクライアント側のjavascript:。

<script type="text/javascript"> 
$(document).ready(function() { 
    $("button").click(function() { 
     alert('Line before controller action post'); 

     //When I get it working I will remove the hardcorded URL 
     $.post("http://localhost:3786/Home/Index/GetStock", null, function (data) { 
      $.each(data, function (i, item) { 

       var displayString = item.Description + ' : ' + item.Price; 

       $("<li/>").html(displayString).appendTo("#list"); 
      }); 
     }); 
    }); 
}); 
</script> 

現在#list要素に表示されているのは、説明のポーズとして価格ペアである "undefined:undefined"の非常に長いリストです。どんなアイデアも高く評価されています。

編集:(他の7時間の答えを投稿することができませんが)問題は、単にHTMLを出力し、​​が正しくアクションメソッドを呼び出していませんでしたハードコードされたURLを使用していることだった

私は今それを修正しました/インデックス/、私は@Url.Action("GetStock")に変更していた。

デバッグ時のヒントについては、@Felixにありがとうございます。

+1

を私は '表示されませんitem'はどこにでも定義されます。 'data'の値の構造を見てください。 –

+0

私の間違い、私はその$で回っていました。それぞれのループは、今、同じ問題を戻しました。 (変更は問題の編集に反映されています) – Yends

+0

ワイヤードで送信されているものや、FireBugのようなjavascriptのデバッガがアイテムオブジェクトの値とは何ですか? – Jan

答えて

0

あなたGetStockMethod()HttpPost属性を持っていますが、あなたは内の送信データを受信するためのパラメータがない。あなたがに送信されたオブジェクトにマップするモデルを作成する必要があります。

関連する問題