2015-07-07 9 views
1

Я следовал этот учебник https://www.youtube.com/watch?v=c_MELPfxJug относительно AJAX и JsonResult в HomeControllerMVC 5 JsonResult возвращает html?

я учебник, однако по какой-то причине, контроллер возвращается 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> 
    } 
+1

какой HTML он возвращает? если есть ошибка, он может также возвращать страницу с ошибкой – DLeh

+0

, я не уверен, что делает ваш учебник, но вы должны сделать 'return Json (new {DoubleValue = doubleValue});' вместо 'new'ing' JsonResult ' – DLeh

+0

@DLeh, что действительно не нужно, в основном метод' Json() 'создает новый объект' JsonResult'. –

ответ

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' 
1

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

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

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

+0

все, что я получаю, это html –