Вернуть PartialView из $.Ajax Post

У меня есть следующий код:

        $.ajax({
            url: "/Home/jQueryAddComment",
            type: "POST",
            dataType: "json",
            data: json,
            contentType: 'application/json; charset=utf-8',
            success: function(data){ 
                //var message = data.Message; 
                alert(data);
                $('.CommentSection').html(data);
            }

И в моем контроллере

    [ValidateInput(false)]
    public ActionResult jQueryAddComment(Comment comment)
    {
        CommentSection commentSection = new CommentSection();

        //ya da - ya da 
        // fill the commentsection object with data

        //then
        return PartialView("CommentSection", commentSection);

    }

Однако, когда я возвращаюсь к странице, предупреждение об успешном завершении не происходит. Может ли кто-нибудь увидеть недостаток в этой логике?

Ответы

Ответ 1

Ожидание JSON в .Ajax POST, но в ActionMethod вы возвращаете PartialView?

Try:

$.ajax({
   url: "/Home/jQueryAddComment",
   type: "POST",
   dataType: "html",
   data: json,
   success: function(data){ 
      //var message = data.Message; 
      alert(data);
      $('.CommentSection').html(data);
   }
}

Ответ 2

Если он не был скопирован по ошибке, кажется, что вам не хватает некоторых токенов закрытия.

       $.ajax({
        url: "/Home/jQueryAddComment",
        type: "POST",
        dataType: "json",
        data: json,
        contentType: 'application/json; charset=utf-8',
        success: function(data){ 
            //var message = data.Message; 
            alert(data);
            $('.CommentSection').html(data);
            } //<-- added close for anonymous function
        }); //<--added close/semicolon for ajax function

Кроме того, вы используете POST, но у вашего действия нет атрибута [Post]. Когда вы запускаете это в отладчике, попадает ли точка останова в вашем действии?