【问题标题】:Asp.net mvc 4 jquery ajax request return internal server errorAsp.net mvc 4 jquery ajax请求返回内部服务器错误
【发布时间】: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 内部服务器错误。

标签: jquery asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-ajax


【解决方案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请求中抛出的异常类型
猜你喜欢
  • 2016-08-06
  • 2019-06-05
  • 2023-04-10
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2020-12-11
相关资源
最近更新 更多