我想使用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
在请求标头中。
有人可以帮忙吗?
谢谢
月
答案 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()
调用