2016-12-11 64 views
-2

我嘗試發送一個JSON對象回服務器。這是我的AJAX調用ajax發佈數據在控制器asp.net mvc 5

function SaveData() { 
var model = [] 
debugger 
$.each($('.Money'), function (i, item) { 
    model.push({ 
     Money: $('.Money').eq(i).val(), 
     Day: $('.Day').eq(i).val(), 
     Note: $('.Note').eq(i).val() 
    }); 
}) 
$.ajax({ 
    url: '@Url.Action("Create")', 
    contentType: "application/json", 
    async: true, 
    data: { partnerDeposit: JSON.stringify(model) }, 
    type: 'POST', 
    dataType: 'json', 
    succsess: function() { 
    } 
})} 

這是在控制器的方法,該方法被調用:

enter image description here

https://i.stack.imgur.com/FqEt9.png

我的問題是,總是從上面的JSON變量是一個空的對象。成功函數被調用,但是當我調試json var時顯示爲空。

請告訴我我做錯了什麼。謝謝。

回答

0

嘗試添加partnerDepositJSON.stringify調用是這樣的:

$.ajax({ 
    url: '@Url.Action("Create")', 
    contentType: "application/json", 
    async: true, 
    data: JSON.stringify({partnerDeposit: model}), 
    type: 'POST', 
    dataType: 'json', 
    succsess: function() { 
    } 
}) 
+0

我試過:(但它仍然是空的。 –

+0

只注意到你的模型不是字符串。在您的操作方法中,您應該將字符串中的partnerDeposit類型更改爲對象類型的列表(具有金錢,日期和註釋字段的對象) –

+0

我只是將Json轉換爲字符串並傳遞給控制器​​。但控制器中的partnerDeposit爲空。我不知道爲什麼:( –

0

我還沒有找到這個答案其他地方,所以我不得不通過實驗發現它。希望這會幫助某人。

  1. 你會發現,在你的控制器,它接收的Request.Form對象,如果你在看的Request.Form [0],你會發現你的數據。之所以表單中存在數據,是因爲MVC將其看作null,是表單元素被POST的關鍵是「」(空白)。因此,在客戶端,你必須正確設置內容類型,並在數據之前加入類似「myData =」+ JSON.stringify(myJSONObject)的字符,其中「myData」是你添加的關鍵名稱,比如:

$.ajax({ type: "POST", url: URL, data: "myData="+JSON.stringify(myJSONObject), contentType: "application/x-www-form-urlencoded; charset=utf-8"

在服務器端,你的[HttpPost]端點都必須有它的輸入變量與同名,你在你的AJAX聲明的關鍵,就像這樣:

` 
[HttpPost] 
[Authorize] 
public ActionResult Index (string myData) // <-- var name matches AJAX 
{ 
    // de-serialize data into server-side object using 
    // JSONConvert.DeserializeObject 
} 

`

相關問題