Подтвердить что ты не робот

ASP.NET MVC AJAX с jQuery

У меня есть сайт, на котором каждая пользовательская страница показывает комментарии и позволяет другим пользователям добавлять комментарии. Я хочу, чтобы это было так, чтобы добавить форму комментариев на странице, и когда пользователь добавляет комментарий, он добавляется в базу данных и отображается в разделе комментариев с AJAX. Я использую jQuery для AJAX и LINQ to SQL для обработки логики базы данных. Как бы это сделать, чтобы после добавления комментария в базу данных раздел комментариев обновлялся и обновлялся без обновления страницы?

4b9b3361

Ответ 1

Вам нужно будет использовать событие "успех" (или "полное" ), которое запускается вызовом jQuery ajax для запуска последующего вызова AJAX для обновления содержимого ваших отзывов. Это, вероятно, будет выглядеть примерно так (крылатое, непроверенное):

function UpdateComments(){
    resultHTML = jQuery.ajax({
        type: 'GET',
        url: 'Comments/List/UserID'
    }).responseText;

    $('#comments').html(resultHTML);
}

function PostComment(targetUserID, commenterUserID, comment)
jQuery.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: $.toJSON({review: comment, id:targetUserID, commenter:commenterUserID}),
        dataType: 'json',
        url: 'Comments/Add',
        success: function(result){
            // Only update comments if the post was successful:
            resultJson = $.evalJSON(result);
            if(resultJson['success'] == true){
                UpdateComments();                    
            }
        }
    });

EDIT Код JSON будет использовать jquery-плагин jquery-json (http://code.google.com/p/jquery-json/)

Ответ 2

В ответ Matt, другой способ отправить данные формы - вместо JSON вы могли бы вызвать $('# form'). serialize() в поле данных data функции jQuery.ajax. Это устранит необходимость в плагине.

Кроме того, я не эксперт по этому вопросу, все еще пытаюсь изучить его сам, но нужно ли иметь как запрос POST, так и GET, когда вы могли бы вставить ответ от ASP.NET MVC на страницу вместо этого? Это приведет к одному запросу. Однако может быть веская причина такого подхода. Я думаю, мой вид будет выглядеть следующим образом:

    // The Controller Action should return a PartialView as response,
    // so just a user control that contains the comments. 
function PostComment(targetUserID, commenterUserID, comment)
jQuery.ajax({
    type: 'POST',
    data: $('#commentForm').serialize(),
    url: 'Comments/Add',
    success: function(result){ 
        $('#comments').html(result);


        }
    }
    });