MVC 5 JsonResult возвращает html?

Я следую этому руководству https://www.youtube.com/watch?v=c_MELPfxJug относительно ajax и JsonResult в HomeController

Я сделал учебник, однако по какой-то причине контроллер возвращает Html, а не json

Я не изменил ни одной строки кода, но он не работает с parseError на стороне javascript.

когда я смотрю на ответ, я вижу 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>
   }

person Mickey Perlstein    schedule 07.07.2015    source источник
comment
какой HTML он возвращает? если есть ошибка, он может возвращать страницу с ошибкой   -  person DLeh    schedule 07.07.2015
comment
Кроме того, я не уверен, что делает ваш учебник, но вы должны делать return Json(new{ DoubleValue = doubleValue}); вместо new JsonResult   -  person DLeh    schedule 07.07.2015
comment
@DLeh в этом нет необходимости, в основном метод Json() создает новый объект JsonResult.   -  person teo van kot    schedule 07.07.2015


Ответы (2)


нашел ошибку, которую я использовал 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'
person Community    schedule 08.07.2015

Я предполагаю, что это должна быть страница ошибки по умолчанию, вы, вероятно, получаете ответ 500, и вы должны использовать вкладку «Сеть» вашего браузера, чтобы увидеть реальную проблему.

  • В браузере откройте инструменты разработчика с помощью клавиши F12 и перейдите на вкладку «Сеть».
  • Выполните соответствующие действия для выполнения запроса ajax (нажмите эту кнопку)
  • Нажмите на строку запроса
  • Перейдите на вкладку «Ответ».

Оттуда вы можете посмотреть реальный запрос, который делает ваш ajax, и ответ от сервера.

person Menelaos Vergis    schedule 07.07.2015
comment
все, что я получаю, это html - person Mickey Perlstein; 08.07.2015