ASP.NET MVC AJAX с jQuery - PullRequest
       15

ASP.NET MVC AJAX с jQuery

20 голосов
/ 23 февраля 2009

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

Ответы [ 2 ]

22 голосов
/ 23 февраля 2009

Вам понадобится воспользоваться событием 'success' (или 'complete'), которое вызывается ajax-вызовом jQuery для запуска последующего 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();                    
            }
        }
    });

РЕДАКТИРОВАТЬ Код JSON будет использовать плагин jquery jquery-json (http://code.google.com/p/jquery-json/)

11 голосов
/ 23 февраля 2009

В ответ на вопрос Мэтта, другой способ отправки данных формы - вместо 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);


        }
    }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...