MVC 5 JsonResult returns html?

MVC 5 JsonResult returns html?

我一直在关注本教程 https://www.youtube.com/watch?v=c_MELPfxJug 关于 ajax 和 HomeController 中的 JsonResult

我完成了教程,但是由于某种原因,控制器返回 Html 而不是 json

我没有更改一行代码,但是 javascript 端出现 parseError 失败。

当我查看响应时,我看到一个 html 页面,而不是 json 对象。

控制器代码:

    public JsonResult DoubleValue(int? Value)
    {
        if (!Request.IsAjaxRequest() || !Value.HasValue)
        { return null; }
        else
        {
            int DoubleValue = Value.Value * 2;
            var ret =  new JsonResult
            {
                Data =
                    new { DoubleValue = DoubleValue }
            };
            return ret;
        }
    }

cshtml:

@using (Html.BeginForm())
{

    @Html.TextBox("txtAmount",0)
     <button id="btnDoubleValue">DoubleIT</button>
    <div id="lblMessage"></div>

}

@section Scripts{
<script type="text/javascript">
    $(function () {
        $('#btnDoubleValue').on('click', function() {

             $.ajax({
                 type: 'POST',
                 url: '@Html.Action("DoubleValue")',
                 data: { 'Value': $('#txtAmount').val() },
                 datatype: 'json',
                 cache: 'false'
             }).success(function (data) {

                 var t = data;

                 $('#txtAmount').val(data.DoubleValue);
             }).error(function (x, o, e) {
                 $('#lblMessage').html('error was found: ' );
             });

            return false;
        })
    });

    </script>
   }

我想这一定是默认错误页面,您可能会收到 500 响应,您必须使用浏览器的“网络”选项卡才能查看真正的问题。

  • 在您的浏览器中使用 F12 键打开开发者工具并导航到“网络”选项卡。
  • 执行 ajax 请求的适当操作(单击该按钮)
  • 点击请求行
  • 导航到响应选项卡。

从那里您可以看到您的 ajax 发出的真实请求以及来自服务器的响应。

发现错误 我使用的是 Html.Action 而不是 Url.Action -> 我想这只是人为错误

来自参考:

   Html.Action - returns the result as an HTML string.

现在有效

        $.ajax({
             type: 'POST',
             url: '@Url.Action("DoubleValue")', //<--- Url.Action
             data: { 'Value': $('#txtAmount').val() },
             datatype: 'json',
             cache: 'false'