我正在试图弄清楚为什么当我点击我的删除按钮时它会改变执行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');
});
答案 0 :(得分: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正在更改下次加载页面时的数据,因此它不再出现在集合中,因此不会包含在下一次加载中
答案 1 :(得分:0)
这里提供的代码存在多个问题...
1.通过您获得POST请求的响应
您在“成功”属性中获得“YES”值,我认为javascript中的if
将视为true
。
2. fnGetSelected
数据表的函数需要一个实例来处理...你不能只是调用函数就像它是一个全局函数一样..所以如果你将表引用存储在像dTable
这样的变量中然后你可以称之为dTable.fnGetSelected()
所以你应该改变这个
var anSelected = fnGetSelected( oTable );
到这个
var anSelected = oTable.fnGetSelected();
我假设oTable有你的数据表
所以要通过按f12调试打开开发人员工具,并在控制台或任何地方查找javascript错误,具体取决于你的浏览器