Asp.net mvc 4 jquery ajax请求返回内部服务器错误
Posted
技术标签:
【中文标题】Asp.net mvc 4 jquery ajax请求返回内部服务器错误【英文标题】:Asp.net mvc 4 jquery ajax request return internal server error 【发布时间】:2015-07-12 17:21:16 【问题描述】:我尝试向 asp.net mvc 控制器建立 ajax 请求,但它给了我内部服务器错误
// My Products Controller
[HttpPost]
public ActionResult FilterCategeory(int prodID)
var categs = new Categ() PROD_ID=prodID .Search();
return Json(categs);
//My ajax request
$("#categs").empty();
var prm = $("#prods").val();
$.ajax(
type: "POST",
url: '@Url.Action("FilterCategeory", "Products")',
contentType: "application/json; charset=utf-8",
data: prodID: prm ,
dataType: "json",
success: function (data)
alert('Success');
,
error: function () alert('error');
);
【问题讨论】:
内部服务器错误意味着您在控制器中抛出异常 - 调试您的代码!string prodID
和 prodID.ToInt32()
的意义是什么 - 如果它是 int
,则设置参数 int prodID
。如果JsonRequestBehavior.AllowGet
是 POST 则毫无意义
我的控制器正确返回产品列表,但我认为与 (return Json(categs);) 它没有返回 json 对象但它返回 c# JsonResult Object 相关的问题,因此我认为 jquery无法解析返回的对象
它应该返回object
Refer the docs
什么是categs
? (展示你的模型)
通常情况下,如果您的配置文件有任何问题,就会发生 HTTP 500 内部服务器错误。
【参考方案1】:
ajax 请求抛出无效的 JSON 原语异常。所以使用 JSON.stringify(obj)
传递数据Ajax 请求
var prm = $("#prods").val();
var obj = prodID: prm ;
$.ajax(
type: "POST",
url: '@Url.Action("FilterCategeory", "Home")',
contentType: "application/json; charset=utf-8",
data : JSON.stringify(obj),
dataType: "json",
success: function (data)
alert('Success');
,
error: function () alert('error');
);
Check this question希望对你有所帮助。
您可以在 Firefox 或 Chrome 中检查错误类型 在火狐中
右击浏览器点击Inspect Element。然后选择网络 标签。当您单击请求时,它将显示标头、cookie 等。从中选择响应。这样你就可以发现错误了
镀铬
【讨论】:
感谢 Golda,它对我有用,但是如何调试 ajax 请求以及如何知道抛出异常的类型? 我已经更新了答案。检查它如何知道ajax请求中抛出的异常类型以上是关于Asp.net mvc 4 jquery ajax请求返回内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
parserrror SyntaxError: Unexpected token < - 在 ASP.NET MVC 4 中使用 jQuery Ajax 加载部分视图
ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery
使用 jQuery $.ajax 进行 ASP.NET MVC 验证
ASP.NET MVC 3 - Ajax.BeginForm 与 jQuery 表单插件