【问题标题】:ASP.NET C# Ajax Call ErrorASP.NET C# Ajax 调用错误
【发布时间】:2017-05-25 17:09:39
【问题描述】:

我直接进入正题。

我正在尝试将值从我的 ajax 传递到控制器并 console.log 值。但是,当我尝试 console.log 时,它给了我错误 500..

这是我的代码:

我在 php 上做 ajax 已经有很长时间了。但是,我还是 asp.net C# mvc 的新手,所以请多多包涵。

AJAX:

$("#Property_ProvinceID").on("change", function () {
    var $this = $(this);
    var province_id = $this.val();
    var $url = "/Property/GetCities";
    alert("get:" + province_id);
    $.ajax({
        url: $url,
        type: 'POST',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data:{id: province_id},
        success: function (data) {
            console.log(data);
        }
    });

});

控制器:

[HttpPost]
public ActionResult GetCities(int id)
{
    return Json(new { success = true });
}

这是错误,但我不知道我的控制器出了什么问题。

POST http://localhost:43969/Property/GetCities 500(内部服务器 错误)

【问题讨论】:

  • 它真的会影响您的 GetCities 行动吗?设置一个断点来检查。还要检查你是否有任何 ActionFilterAttribute,那里可能会发生错误。
  • @KimHoang 我真的很肯定 GetCities 方法存在于我的 PropertyController 类中......我不知道为什么它不起作用......代码对我来说似乎很好..
  • 另一个猜测可能是您的province_id 的值,它可能为null 或不是无效整数。我只能根据您问题中的信息提出建议。
  • @KimHoang 我在将它传递给控制器​​之前提醒它并且id是好的。

标签: c# jquery asp.net ajax asp.net-mvc


【解决方案1】:

如果使用contentType: 'application/json; charset=utf-8',则使用JSON.stringify 将发送的数据转换为JSON 字符串。

$("#Property_ProvinceID").on("change", function () {
    var $this = $(this);
    var province_id = $this.val();
    var $url = "/Property/GetCities";
    alert("get:" + province_id);
    var data  = JSON.stringify({id: province_id});
    $.ajax({
        url: $url,
        type: 'POST',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: data,
        success: function (data) {
            console.log(data);
        }
    });

});

正如@StephenMuecke 在 cmets 中提到的那样

如果contentType: 'application/json; charset=utf-8' 被移除,则不需要字符串化(因此它使用默认的application/x-www-form-urlencoded; charset=UTF-8')。

【讨论】:

  • 谢谢你……所以我需要先把它串起来……我虽然{id : province}就足够了。
  • {id : province} 本身就是一个 javascript 值。您需要将其转换为 JSON。
  • 如果contentType: 'application/json; charset=utf-8', 被删除,则不需要字符串化(因此它使用默认的application/x-www-form-urlencoded; charset=UTF-8')。 [FromBody] 用于 web-api,这个问题似乎与此无关?
  • @StephenMuecke 感谢您的澄清。会更新。
【解决方案2】:

您可以添加错误功能来检查您的 ajax 上可能出现的错误。

例如

error: function(xhr, status, error) {
   var err = eval("(" + xhr.responseText + ")");
   alert(err.Message);
}

【讨论】:

    猜你喜欢
    • 2016-01-07
    • 2023-03-11
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    相关资源
    最近更新 更多