2010-09-28 162 views
2

我想模仿使用jQuery的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 
在请求头

有人可以帮忙吗?

谢谢

七月

回答

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 //注意:这通常是一个坏主意。 – 2010-09-28 16:58:13

1

我觉得“返回false”在点击事件的结束是防止形式从提交。

在附注中,如果要刷新整个页面,为什么要使用ajax?需要思考的东西。

+0

没错。我想你会想重新载入包含评论的DIV。否则,为什么要使用AJAX? – 2010-09-28 16:27:47

+0

是的你是对的,我只是想重新加载评论html位 – jul 2010-09-28 16:33:13

0

$(".delete_comment") a提交按钮?如果是的话,返回错误是你的问题。否则, ajax明确是要AVOID页面重新加载..使用form.submit()调用,而不是

3

为什么你需要重新加载页面?如果服务器端代码正在运行并且注释被删除,则只需使用remove()方法从客户端的DOM中删除注释。

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

我需要重新加载整个评论html位,因为它也显示了评论数 – jul 2010-09-28 16:32:18

+0

你可以减少一个也许? – 2010-09-28 16:36:14