【问题标题】:Trying to get JSON from MVC Controller and getting error net::ERR_INCOMPLETE_CHUNKED_ENCODING试图从 MVC 控制器获取 JSON 并得到错误 net::ERR_INCOMPLETE_CHUNKED_ENCODING
【发布时间】:2017-06-09 22:18:52
【问题描述】:

我正在尝试从我的控制器中获取 JSON 以在 jQuery 中使用。我有以下代码。当我在浏览器中访问 URL 时,它会返回 json,所以我知道控制器正在工作……但我得到以下信息

GET http://localhost:52802/Checkout/GetContactById?id=1net::ERR_INCOMPLETE_CHUNKED_ENCODING

客户端 jQuery

var theUrl = window.location.origin + '/Checkout/GetContactById?id=' + contactId;

$.ajax({
    url: theUrl,
    type: "GET",
    success: function (result) {
        alert("Success");
    },
    error: function (error) {
        alert("Error");
    }
});

服务器端控制器

[HttpGet]
public IActionResult GetContactById(int id)
{
  Contact contact = this.checkoutDataAccess.GetContactById(id);
  return Json(contact);
}

我得到的唯一警报是“错误”

更新

经过更多研究,看起来一切都在加载......但我收到一个错误

加载响应数据失败

在控制台中。

我单步执行了代码,一切都在控制器端运行。我不确定它是否没有正确格式化 JSON,或者我没有正确接收它。无论哪种方式,我都不知道发生了什么。

【问题讨论】:

  • 使用您的浏览器工具(网络选项卡)检查响应 - 它会为您提供有关错误的更多详细信息。
  • 你测试过GetContactById方法的工作吗?
  • @StephenMuecke 它给出了 500 错误我在帖子中添加了更多详细信息以及我收到的错误
  • @DanielVorph 是的,但是当从 json 调用它时我没有测试它,只是直接访问 URL。当我通过 JSON 调用它后,我能够重新创建错误。我将详细信息和异常错误作为更新放在上面的帖子中
  • 你的方法是GET,所以需要return Json(contact, JsonResuestBehavior.AllowGet);

标签: jquery json asp.net-mvc-4 asp.net-core asp.net-core-mvc


【解决方案1】:

实际上,自从您输入 alert("Error"); 以来,您会收到文本错误。 尝试警报(错误);反而 或者尝试使用 firebug 进行调试

【讨论】:

  • 该警报只是查看 ajax 击中位置的一种快速方法,因为 chrome 工具不允许我单步执行。所以它只是告诉我它在错误部分。我需要获取成功警报才能获取 json。
【解决方案2】:

尝试将数据类型 JSON 添加到 ajax 调用。

也许可以尝试在正文中添加参数。

像这样:

var theUrl = window.location.origin + '/Checkout/GetContactById';

$.ajax({
   url: theUrl,
   type: "GET",
   dataType: "json",
   data: { id: contactId },
   success: function (result) {
      alert("Success");
   },
   error: function (error) {
      alert("Error");
   }
});

我建议使用 Url.Action 助手。

喜欢:

 $.ajax({
       url: '@Url.Action("GetContactById", "Checkout")',
       type: "GET",
       dataType: "json",
       data: { id: contactId },
       success: function (result) {
         alert("Success");
       },
       error: function (error) {
          alert("Error");
       }
    });

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,在寻找了几种可能的解决方案后,我尝试使用我的 api 表单 Postman 并发现我返回了格式错误的 JSON。 就我而言,是因为我的 ViewModel 的属性之一是 int[] 类型。删除此属性后,我可以正常检索数据。

    希望对你有帮助。

    【讨论】:

      【解决方案4】:

      就我而言,我遇到了递归加载和实体框架的问题。实体框架递归加载实体,JSON 序列化器产生了太大的 json 响应。

      services.AddMvc().AddJsonOptions(options => 
           options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
      

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2017-08-05
      • 2017-11-20
      • 1970-01-01
      相关资源
      最近更新 更多