2010-09-28 4 views
2

Я хотел бы имитировать поведение формы html с помощью jquery. При нажатии на кнопку, я хочу, чтобы удалить комментарий с помощью:jquery form не перезагружает страницу

$(".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 

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

Любой может помочь?

Спасибо

Jul

ответ

1

Вы говорите, что вызов 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; 
}); 
+0

+1 для вашего комментария ... async: false // NB: обычно это плохая идея. –

1

Я думаю, что «возвращение ложным» в конце Вашего события щелчка препятствует форму от представления.

На боковой ноте, зачем использовать ajax, если вы собираетесь обновить всю страницу? Что-то думать о.

+0

правый. Я бы подумал, что вы хотите просто перезагрузить DIV, содержащий комментарии. в противном случае зачем использовать AJAX? –

+0

Да, вы правы, я просто хочу перезагрузить комментарий html bit – jul

0

$(".delete_comment") a кнопка отправки? если это так, то ложь возврата является вашей проблемой. В противном случае, ajax специально предназначен для сброса страниц. Используйте вместо этого form.submit().

3

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

success: function(){ 
     $('comment').remove(); //might need to change the selector here, 
           //but you should be able to handle that 
    } 
+0

Мне нужно перезагрузить весь комментарий html bit, потому что он также показывает количество комментариев – jul

+0

Вы могли бы уменьшить это на один, может быть? –

Смежные вопросы