3

我试图弄清楚为什么当我单击删除按钮时它会更改执行 php 方面的操作,但是当它返回客户端时它不会从表中删除该行。我正在为我的表使用数据表。

$('.delete').click(function() { 
    var titleID = $(this).attr('rel');
    $.post('titles/delete', { titleID:titleID }, function(data) {
        if (data.success)
        {
            var anSelected = fnGetSelected( oTable );
            oTable.fnDeleteRow( anSelected[0] );
        }
    });
});

php端的响应是这样的:

{"success":"Yes","message":"Title was deleted successfully!"}

编辑 :

这是我现在正在使用的内容,我收到一条有趣的错误消息,指出未定义 fnGetSelected。所以我不确定我是否正确地这样做来删除表格行。

$('.delete').click(function() { 
var titleID = $(this).attr('rel');
$.post('titles/delete', { titleID:titleID }, function(data) {
    if (data.success)
    {
        var anSelected = fnGetSelected( oTable );
        oTable.fnDeleteRow( anSelected[0] );
    }
}, 'json');
});
4

2 回答 2

2

oTable 是在数据表功能中找到的对象,并在其中定义。一旦函数运行了它的过程并呈现了它想要的任何东西,这个变量就会被销毁,因为它不是任何类型的全局变量。

$('.delete').click(function() { 
    var titleID = $(this).attr('rel');
    $.post('titles/delete', { titleID:titleID }, function(data) {
        if (data.success)
        {
            var anSelected = fnGetSelected( oTable );
            oTable.fnDeleteRow( anSelected[0] );
        }
    });
});

如果您希望使用 $.post 并返回数据,那么指定您想要返回的数据和类型是个好主意

$('.delete').click(function() { 
    var titleID = $(this).attr('rel');
    $.post('titles/delete', { titleID:titleID }, function(data) {
        if (data.success)
        {
            var anSelected = fnGetSelected( oTable );
            oTable.fnDeleteRow( anSelected[0] );
        }
    }, 'json');
});

还值得一提的是,而不是在渲染后尝试使用数据表对象。根据“删除”按钮所在的位置,您可以并且很可能是最简单的路线,例如

$(this).parent('tr').remove();

假设按钮/链接与要删除的按钮/链接在同一行。您可以执行上述操作,因为这纯粹是为了删除相关表格行的视觉效果。还假设您的 ajax 正在更改下次加载页面时的数据,因此它不再在集合中,因此不会包含在下一次加载中

于 2012-04-25T23:23:56.207 回答
0

您在此处提供的代码存在多个问题...
1.通过您为 POST 请求获得的响应。
您正在为“成功”属性获得“是”值,我认为if在 javascript 中不会将其视为true.
2.fnGetSelected数据表的函数需要一个实例来处理..你不能像调用全局函数一样调用函数..所以如果你有表引用存储在一个变量中,dTable那么你可以调用它,dTable.fnGetSelected()
你应该这样调用它改变这个

var anSelected = fnGetSelected( oTable );

对此

var anSelected = oTable.fnGetSelected();


我假设 oTable 有你的数据表,
所以通过按 f12 来调试打开开发人员工具,并在控制台或任何地方查找 javascript 错误,具体取决于你的浏览器

于 2012-04-25T23:02:18.807 回答