JQuery - 在AJAX调用后删除表行

时间:2010-01-12 23:14:50

标签: jquery

我试图在AJAX方法调用之后刷新一个页面(不过,这相当违反了AJAX方法的目的) - 但是我遇到了一个艰难的截止日期,我需要完成开发,我很公平使用jQuery的新手。

我有一张桌子,左侧有复选框。用户可以选择一个或多个复选框,然后单击激活AJAX调用的图像。在调用返回后,我想从显示的表中删除选定的行(有效地截断表)。

我已经设法编写代码来执行第一位(触发所选行的AJAX代码),但我有点

jQuery('#id1').click(function(){
   var selected = new Array();
   jQuery('#Cntnr').find('table input:checkbox:checked').each(function(){
 selected.push(jQuery(this).attr("id"));
 });
 if (selected.length > 0) {
      if (confirm('Blah, blah ..?')) {
      jQuery.post("example.com", { ids: selected.join(';') },
       function(data){
  jQuery(data.id).html(data.payload); 
  alert('unreachable code ?!');
  }, "json");
    }
 }else alert('select a checkbox first.');
 });

我已将alert()函数作为回调的一部分 - 这是我希望删除行的语句 - 但是,该行似乎无法访问,因为警报框永远不会显示。

如果有人可以编辑上面的代码,我将不胜感激,因此所选行将作为回调的一部分从表中删除。元素具有与所选变量中的属性匹配的id属性。

1 个答案:

答案 0 :(得分:0)

首先,您目前是否将数据发布到“example.com”?

如果是这样,这一行就会出错:

jQuery(data.id).html(data.payload); 

未定义data.payload。因此代码不会继续。

此外,如果您期望JSON返回类型,请使用jQuery.postJSON()代替jQuery.post()

至于删除角色,您需要服务器返回已删除的ID列表,并循环遍历每一行以查找已删除的ID并删除行。

示例:

Array.prototype.has=function(v){
for (i=0;i<this.length;i++){
if (this[i]==v) return true;
}
return false;
}

var arr = data.ids.split(';');
jQuery('#Cntnr').find('table tr input:checkbox').each(function(){
   var $this = $(this);
   if(arr.has($this.attr('id'))){
      $this.parent('tr').remove();
   }
});