Форма jquery не перезагружает страницу - PullRequest
2 голосов
/ 28 сентября 2010

Я хотел бы имитировать поведение HTML-формы, используя jquery.При нажатии на кнопку я хочу удалить комментарий, используя:

$(".delete_comment").live('click', function() {
    var btn = $(this);
    var param_delete_comment = btn.attr("href");
    $.ajax({
        url: '/you/ajax_delete_comment/'+param_delete_comment,
        type: 'POST',
        async: false

    })
    return false;
});

Кажется, что обработка на стороне сервера работает (она удаляет комментарии и возвращает бит комментария в html), но бит комментарияне перезагружается.

Единственное отличие, которое я вижу по сравнению с HTML-формой, заключается в том, что последняя имеет

Content-Type application/x-www-form-urlencoded; charset=UTF-8

в заголовках запросов.

Кто-нибудь может помочь?

Спасибо

Июл

Ответы [ 4 ]

3 голосов
/ 28 сентября 2010

Зачем вам нужно перезагрузить страницу? Если серверный код работает и комментарий удален, просто удалите комментарий из DOM на стороне клиента , используя метод remove().

success: function(){
        $('comment').remove(); //might need to change the selector here, 
                               //but you should be able to handle that 
    }
1 голос
/ 28 сентября 2010

Вы говорите, что вызов AJAX правильно возвращает нужный вам HTML, но вы ничего не делаете с ним. Используйте success обратный вызов:

$(".delete_comment").live('click', function() {
    var btn = $(this);
    var param_delete_comment = btn.attr("href");
    $.ajax({
        url: '/you/ajax_delete_comment/'+param_delete_comment,
        type: 'POST',
        async: false, // NB: this is usually a bad idea.
        success: function(data) {
            // data is the HTML returned by ajax_delete_comment; use it, e.g.:
            $('#comment').replaceWith(data);
        }
    })
    return false;
});
1 голос
/ 28 сентября 2010

Я думаю, что "return false" в конце вашего события click препятствует отправке формы.

Кстати, зачем использовать ajax, если вы собираетесь обновить всю страницу?О чем подумать.

0 голосов
/ 28 сентября 2010

является $(".delete_comment") кнопкой отправки?если так, то возвращение false - ваша проблема.В противном случае, ajax специально предназначен для того, чтобы ИЗБЕЖАТЬ перезагрузки страницы. Используйте вместо этого form.submit() вызов

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