我试图在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属性。
答案 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();
}
});