使用JQuery Ajax在MVC中发布一个数组会导致500(内部服务器错误)
使用JQuery Ajax在MVC中发布一个数组会导致500(内部服务器错误)
我有一个像这样的数组:\n
var nums=["21", "22", "23", "20", "19", "18"];
\n还有这段 JQuery Ajax 代码:\n
$('#chk').click(function () { $.ajax({ url: "/BarberShop/ServiceUpdate", type: "Post", data:{ nums: nums}, dataType: "json", success: function (data) { } }); });
\n以及这个控制器动作:\n
[HttpPost] public ActionResult ServiceUpdate(string nums) { //做一些操作...... return View(); }
\n问题是当我使用ajax发送数组时,控制器动作中的nums
参数是null
,而且服务器还给我返回了以下错误:\n
\nPOST http://localhost:18322/BarberShop/ServiceUpdate 500 (Internal Server Error)\nn.ajaxTransport.k.cors.a.crossDomain.send @ jquery-2.1.4.min.js:4n.extend.ajax @ jquery-2.1.4.min.js:4(anonymous function) @ Barbershop:481n.event.dispatch @ jquery-2.1.4.min.js:3n.event.add.r.handle @ jquery-2.1.4.min.js:3\n
\n我尝试过这些链接中的所有答案以及其他一些答案:\n500-internal-server-error-on-jquery-ajax-post-asp-net-mvc\npass-array-to-ajax-request-in-ajax\n但仍然存在问题。谢谢。
问题的原因是在Javascript端使用了一个数组,而在控制器端期望的是一个字符串。解决方法是将控制器端的参数改为List
具体代码如下:
Javascript端代码:
var nums=["21", "22", "23", "20", "19", "18"]; $.ajax({ url: "/BarberShop/ServiceUpdate", type: "Post", data:{ nums: nums}, dataType: "json", success: function (data) { }, traditional: true });
控制器端代码:
public ActionResult ServiceUpdate(Listnums) { // 处理逻辑 }
参考链接:[How can I post an array of string to ASP.NET MVC Controller without a form?](https://stackoverflow.com/questions/309115)