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 prodIDprodID.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 表单插件

ASP.NET MVC 2 - jquery ajax 响应失败

ASP.NET MVC 中的 jQuery AJAX 响应