這是我的ajax在數組中有數據時被調用。Jquery ajax調用在MVC中傳遞JSON數組(500內部服務器錯誤)
function sendDataToController() {
$.ajax({
type: 'POST',
url: '/Home/Results',
cache: false,
traditional: true,
contentType: "application/json",
data: { FormData : exampleFormData },
success: function (data) {
alert("sent data to controller")
},
error: function (data) {
alert("Error " + data.responseText);
}
});
}
數組是這樣的:
var exampleFormData = [];
而且JSON看起來像這樣目前正在與一些更多的數據,而且縮短了顯示的目的。
"[{\"Birthdate\":\"1947-03-21\",\"ROWID\":\"000001\",\"SpecCodes\":\"987654\"}]"
在使用ajax發送到控制器之前,這個JSON被推入數組中多次。
exampleFormData.push(jsonData);
的控制,這是被傳遞到這個樣子的:
public ActionResult Results(string exampleFormData)
{
var formDataList = JsonConvert.DeserializeObject<List<SampleFormData>>(exampleFormData);
return View();
}
這裏就是模型「SampleFormData」列表
public class SampleFormData
{
public string Birthdate { get; set; }
public string ROWID { get; set; }
public string Score { get; set; }
public string SpecCodes { get; set; }
}
由於是,這將產生類500內部服務器錯誤。任何人都可以提供任何關於在這裏做錯了什麼的輸入?
編輯:解決方案是從ajax中完全刪除contentType行,並由Rion在響應中提供。
大多數情況下,如果您使用ajax,我使用JsonResult作爲返回類型,並且根本不調用視圖,只返回Json(myObj)。 – nurdyguy
這是一個很好的方法。我只是使用了OP最初發布的相同代碼(使用更通用的ActionResult),但是「JsonResult」可以正常工作。這完全取決於OP想要在行動中實際執行的內容。 –
我的ajax是在一個JavaScript文件,所以我必須使用「主頁/結果」,但這並沒有解決我的問題。我仍然收到內部500服務器錯誤。堆棧跟蹤顯示「無效的JSON圖元:FormData」。如果這有助於找出我的問題。 – user3654442