jquery表单不会重新加载页面

时间:2010-09-28 16:22:22

标签: jquery forms

我想使用jquery模仿html表单行为。点击按钮时,我想删除评论:

$(".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 个答案:

答案 0 :(得分:3)

为什么需要重新加载页面?如果服务器端代码正常工作且评论已删除,只需使用remove()方法从客户端的DOM中删除评论

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

答案 1 :(得分:1)

我认为点击事件结束时“返回false”会阻止表单提交。

另外,如果要刷新整个页面,为什么要使用ajax?需要考虑的事情。

答案 2 :(得分: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;
});

答案 3 :(得分:0)

$(".delete_comment")提交按钮?如果是这样,返回false就是你的问题。除此以外, ajax专门用于避免页面重新加载..改为使用form.submit()调用