2012-01-26 89 views
2

我是新來的JQuery/JSON,我試圖從我的MVC操作方法之一返回到客戶端,並顯示在屏幕上的JSON對象。json對象來自c#asp.net mvc返回undefined

我一直用這個教程作爲參考:http://www.asp.net/ajaxlibrary/jquery_json_data_from_controller.ashx

這裏是我的操作方法:

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

(GetStock()返回類型股票,其中股票是一個普通的老C#的List有兩個屬性,一個字符串描述和一個十進制價格對象)

而我的客戶端的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個小時)的問題是使用硬編碼URL​​未正確調用動作方法,只從輸出HTML/Index /,我將其更改爲@Url.Action("GetStock")並且已經離開。

感謝@Felix提示調試時應該注意什麼。

+1

我沒有看到'項目在任何地方定義。看看'data'的值的結構。 –

+0

我的錯誤,我正在玩這個$ .each循環,現在改回它,同樣的問題。 (更改反映在問題編輯) – Yends

+0

你檢查與提琴手什麼是通過電線或JavaScript調試器像FireBug什麼是你的物品對象的價值? – Jan

回答

0

GetStockMethod()有一個HttpPost屬性,但目前還沒有參數來接收你發送的數據,你需要創建一個映射到您要發送的對象模型。