2015-10-13 177 views
0

我對MVC非常陌生,並且對MVC/AJAX調用有疑問。MVC5:通過Ajax獲取JSON不正確地將數據傳遞給控制器​​

我想從MVC控制器獲取數據,但它一直說傳入參數爲NULL。

我的Javascript調用如下,我硬編碼ID:1245作爲測試。

$.ajax({ 
       type: "GET", 
       url: 'MDT/Detail', 
       data: JSON.stringify({ id: 1245 }), 
       contentType: "application/json", 
       dataType: "JSON", 
       success: function (data) { 
        console.log(data); 
       }, 
       fail: function (data) {  
       } 
      }); 

以下是在控制器中的代碼..

[Route("MDT/Detail/{id}")] 
    public JsonResult Detail(int? id) 
    { 
     ITS.Models.ComputerDetail cp = GetDataFromDatabase(id.Value); 

     return Json(cp, JsonRequestBehavior.AllowGet); 
    } 

我已經在Firebug檢查和參數正確傳遞如下:

enter image description here

但它是給我以下錯誤的「ID」參數

Exception Details: System.InvalidOperationException: Nullable object must have a value. 

我搞不​​清楚我做錯了什麼。你能幫我解決這個錯誤嗎?

如果我使用了此URL(http://localhost:6481/MDT/Detail?id=1245),它將返回JSON數據。但是,如果我使用(http://localhost:6481/MDT/Detail/1245),它將顯示與JQuery AJAX調用相同的錯誤。那麼,它一定是路由問題?

回答

0

data: { id: 1245 },

更多關於AJAX更換data: JSON.stringify({ id: 1245 }),可以發現in it's documentation

-1
var youridvalue = 1254; 

$.ajax({ 
    type: "POST", 
    url: '@Url.Content("~/MDT/Detail")?id=' + youridvalue,   
    contentType: "application/json", 
    dataType: "JSON", 
    success: function(data) { 
     console.log(data); 
    }, 
    fail: function(data) {} 
}); 
+0

請詳細說明:爲什麼要把你的代碼的工作,而一個在這個問題沒有?在SO上不鼓勵使用僅有代碼的答案。另外,您的解決方案與接受的答案有何不同? –

相關問題