【问题标题】:AJAX Unexpected Token < JSON at position 4AJAX 意外令牌 < JSON 在位置 4
【发布时间】:2016-12-02 15:30:47
【问题描述】:

我的 Ajax 调用和操作方法看起来一切正常,但看起来它返回的是 HTML,而不是有效的 JSON。谁能告诉我为什么会出现这个错误?

Error: parsererror SyntaxError: Unexpected token < in JSON at position 4

[HttpPost]
    public ActionResult UpdateStatus()
    {
        try
        {
            return Json(new { success = true, message = "success!" });
        }
        catch (Exception ex)
        {
            return Json(new { success = false, ex.Message });
        }
    }

        $("#updateStatus").click(function () {
                $.ajax({
                    url: "@Url.Action("UpdateStatus","Home")",
                    type: "post",
                    dataType: "json",
                    cache: false,
                    success: function (response, textStatus, jqXHR) {

                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert("Error: " + textStatus + " " + errorThrown);
                    }
                });
            }
        });

【问题讨论】:

  • 您似乎正在向您的服务器发送 html,但服务器无法解析它,请将您在服务器上看到的内容发送给我们?
  • 我试过你的代码,它和我一起工作..你的问题到底是什么?
  • 那么当你查看网络请求时,服务器返回了什么?

标签: javascript jquery ajax asp.net-mvc


【解决方案1】:

我最近遇到了同样的错误,更改 dataType: "html" 修复了该错误。我的控制器方法返回一个局部视图,所以我的情况有点不同。

【讨论】:

    【解决方案2】:

    确保每个输入都有 ValidationMessageFor 元素

    【讨论】:

      【解决方案3】:

      您在 catch 块中缺少消息标记

      【讨论】:

      • 也许您可以展示如何使用更新的代码 sn-p 来解决此问题?
      • public ActionResult UpdateStatus() { try { return Json(new { success = true, message = "success!" }); } catch (Exception ex) { return Json(new { success = false, message = ex.Message }); } }
      • 将其编辑到您的答案中,不要只是将其作为评论。您的答案下方有一个“编辑”按钮。
      猜你喜欢
      • 2016-08-17
      • 1970-01-01
      • 2019-09-22
      • 2019-05-06
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      相关资源
      最近更新 更多