【问题标题】:delete in dataTable server side在数据表服务器端删除
【发布时间】:2014-02-08 14:23:40
【问题描述】:

我的用户列表中有这个问题,dataTable 服务器端运行良好,向我展示我拥有的所有用户,我将按钮用于查看配置文件、编辑配置文件和删除配置文件。 ID 在 href 中并发送到确切的用户 ID。唯一的错误是当我尝试删除任何用户时...我必须按 ID 删除用户的 ajax 什么都不做...请您帮帮我。

这里是服务器端(只有连接):

$aColumns = array( 'id_user', 'nombre', 'apellido', 'id_tipo');

/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = "id_user";

/* DB table to use */
$sTable = "USERS";

/* Database connection information */
$gaSql['user']       = "soft_chas";
$gaSql['password']   = "123456";
$gaSql['db']         = "soft_chas";
$gaSql['server']     = "localhost";

js数据表:

$('#userTabla').dataTable( {
    "bProcessing": true,
    "bServerSide": true,
    "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span12'i><'span12 center'p>>",
    "sAjaxSource": "server_processing.php",
    "aoColumns": [
        { "mData": "id_user" },
        { "mData": "nombre" },
        { "mData": "apellido" },
        { "mData": "tipo" },
        {
            "mData": null,
            "sClass": "center",
            "sDefaultContent": "",
            "fnRender": function (o) {
            return '<a href="user_profile.php?id_user=' + o.aData[0] + '" class="btn btn-success"><i class="icon-user icon-white"></i> Ver perfil</a> <a href="user_edit.php?id_user=' + o.aData[0] + '" class="btn btn-info"><i class="icon-edit icon-white"></i> Editar</a> <a id="' + o.aData[0] + '" class="btn btn-danger" href="#"><i class="icon-trash icon-white"></i> Borrar</a>'
        },
        "aTargets": [3]
        }
    ],
    "sPaginationType": "bootstrap",
    "oLanguage": {
    "sLengthMenu": "_MENU_ registros por pag"
    }
});

通过ID删除用户的JS:

$(document).ready(function()
{
    $('table#userTabla td a.btn-danger').click(function(e)
    {
        if (confirm("<?php $translate->__("Do you really want to delete User's record?"); ?>"))
        {
         e.returnValue = false;
         var id = $(this).attr('id');
         var data = 'recordToDelete='+ id;
            var parent = $(this).parent().parent();
            $.ajax(
            {
                   type: "POST",
                   url: "include/delete.php",
                   data: data,
                   cache: false,

                   success: function()
                   {
                        parent.fadeOut('slow', function() {$(this).remove();});
                   }
             });                
        }
    });
    $('table#userTabla tr:odd').css('background',' #FFFFFF');
});

删除代码:

<?php 
include_once("configs.php");
if(isset($_POST["recordToDelete"]) && strlen($_POST["recordToDelete"])>0 && is_numeric($_POST["recordToDelete"])) {
  $idToDelete = filter_var($_POST["recordToDelete"], FILTER_SANITIZE_NUMBER_INT);
    if($stmt = $conn->prepare("DELETE FROM USERS WHERE id_user = $idToDelete"))
    $stmt->bindParam("$idToDelete", $id_user, PDO::PARAM_INT);
    $stmt->execute();
  }
$conn = null;
?>

页面中的表格:

<table class="table table-striped table-bordered bootstrap-datatable" id="userTabla" serverSide="true" processing="true">
        <thead>
            <tr>
            <th>ID</th>
            <th><?php $translate->__('Name'); ?></th>
            <th><?php $translate->__('Last Name'); ?></th>
            <th><?php $translate->__('Type'); ?></th>
            <th><?php $translate->__('Actions'); ?></th>
        </tr>
    </thead>   
    <tbody>
        <tr>
            <td colspan="5" class="dataTables_empty center"><i class="icon-refresh"></i><img src="img/ajax-loaders/ajax-loader-1.gif" title="ajax-loaders">&nbsp;<?php $translate->__('Please wait'); ?> ...</td>
        </tr>
    </tbody>
</table>

【问题讨论】:

  • 添加你的删除代码include/delete.php
  • @VolkanUlukut,我已经添加了代码
  • @VolkanUlukut,感谢您的支持,但我的 ajax 是无法正常工作的部分......因为当我点击删除按钮时,没有什么可以显示......甚至弹出与“您真的要删除用户的记录吗?”没有给我任何东西,所以 ajax 就像看不到按钮或 id...但我在代码中看到每个用户的 id..
  • 您在控制台中看到任何 javascript 错误吗?
  • 控制台没有显示任何错误,如果我在另一种类型的 dataTable 中使用这个 ajax 而没有服务器端工作正常

标签: javascript jquery datatable


【解决方案1】:

试试这个 ajax js:

$(document).ready(function(){
    $(document).delegate('.btn-danger', 'click', function() { 
        if (confirm("<?php $translate->__("Do you really want to delete User's record?"); ?>"))
        {
            var id = $(this).attr('id');
            var data = 'recordToDelete='+ id;
            var parent = $(this).parent().parent();
            $.ajax({
                type: "POST",
                url: "include/delete.php",
                data: data,
                cache: false,
                success: function()
                {
                    parent.fadeOut('slow', function() {$(this).remove();});
                }
            });                
        }
    });
    $('table#userTabla tr:odd').css('background',' #FFFFFF');
});

【讨论】:

    【解决方案2】:

    您的 bindParam 语句出现了一些问题。检查documentation。 $id_user 未定义,您未在 bindParam 中使用命名参数。试试这个:

    if($stmt = $conn->prepare("DELETE FROM USERS WHERE id_user = ?"))
    $stmt->bindParam(1, $idToDelete, PDO::PARAM_INT);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 2013-03-17
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      相关资源
      最近更新 更多