这是我的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