Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DataTables警告:表id=staff\u数据-JSON响应无效_Php_Jquery_Ajax_Datatables - Fatal编程技术网

Php DataTables警告:表id=staff\u数据-JSON响应无效

Php DataTables警告:表id=staff\u数据-JSON响应无效,php,jquery,ajax,datatables,Php,Jquery,Ajax,Datatables,在使用jquery和ajax以php页面形式在表中发布数据方面,我还是新手。当我填写表单时,输入的数据可以保存在我的数据库中,但不幸的是,当我想在我的php页面查看表中的数据时,它总是说DataTables警告:table id=staff_data-无效JSON响应。有关此错误的详细信息,请参阅。有人能帮我吗?因为我在另一张表中使用了相同的代码,但只有这张表在查看数据时有问题 staff.php <?php //staff.php include('database_connectio

在使用jquery和ajax以php页面形式在表中发布数据方面,我还是新手。当我填写表单时,输入的数据可以保存在我的数据库中,但不幸的是,当我想在我的php页面查看表中的数据时,它总是说DataTables警告:table id=staff_data-无效JSON响应。有关此错误的详细信息,请参阅。有人能帮我吗?因为我在另一张表中使用了相同的代码,但只有这张表在查看数据时有问题

staff.php

<?php
//staff.php

include('database_connection.php');

if(!isset($_SESSION['type']))
{
    header('location:login.php');
}

if($_SESSION['type'] != 'master')
{
    header("location:index.php");
}

include('header.php');

?>

    <span id="alert_action"></span>
    <div class="row">
        <div class="col-lg-12">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <div class="col-lg-10 col-md-10 col-sm-8 col-xs-6">
                        <div class="row">
                            <h3 class="panel-title">Add Staff</h3>
                        </div>
                    </div>
                    <div class="col-lg-2 col-md-2 col-sm-4 col-xs-6">
                        <div class="row" align="right">
                             <button type="button" name="add" id="add_button" data-toggle="modal" data-target="#staffModal" class="btn btn-success btn-xs">Add</button>
                        </div>
                    </div>
                    <div style="clear:both"></div>
                </div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-sm-12 table-responsive">
                            <table id="staff_data" class="table table-bordered table-striped">
                                <thead><tr>
                                    <th>Staff ID</th>
                                    <th>Staff Name</th>
                                    <th>Staff I/C No</th>
                                    <th>Staff Address</th>
                  <th>Staff Phone No</th>
                  <th>Edit</th>
                                    <th>Delete</th>
                                </tr></thead>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div id="staffModal" class="modal fade">
        <div class="modal-dialog">
            <form method="post" id="staff_form">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                        <h4 class="modal-title"><i class="fa fa-plus"></i> Add New Staff</h4>
                    </div>
                    <div class="modal-body">
                        <label>Enter Staff Name</label>
                        <input type="text" name="staff_name" id="staff_name" class="form-control" required />
                    </div>
            <div class="modal-body">
              <label>Enter Staff I/C No</label>
            <input type="number" name="staff_identityno" id="staff_identityno" class="form-control" required />
            </div>
            <div class="modal-body">
              <label>Enter Staff Address</label>
            <input type="text" name="staff_address" id="staff_address" class="form-control" required />
            </div>
            <div class="modal-body">
              <label>Enter Staff Phone No</label>
            <input type="text" name="staff_phoneno" id="staff_phoneno" class="form-control" required />
            </div>
                    <div class="modal-footer">
                        <input type="hidden" name="staff_id" id="staff_id"/>
                        <input type="hidden" name="btn_action" id="btn_action"/>
                        <input type="submit" name="action" id="action" class="btn btn-info" value="Add" />
                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
<script>
$(document).ready(function(){

    $('#add_button').click(function(){
        $('#staff_form')[0].reset();
        $('.modal-title').html("<i class='fa fa-plus'></i> Add New Staff");
        $('#action').val('Add');
        $('#btn_action').val('Add');
    });

    $(document).on('submit','#staff_form', function(event){
        event.preventDefault();
        $('#action').attr('disabled','disabled');
        var form_data = $(this).serialize();
        $.ajax({
            url:"staff_action.php",
            method:"POST",
            data:form_data,
            success:function(data)
            {
                $('#staff_form')[0].reset();
                $('#staffModal').modal('hide');
                $('#alert_action').fadeIn().html('<div class="alert alert-success">'+data+'</div>');
                $('#action').attr('disabled', false);
                staffdataTable.ajax.reload();
            }
        })
    });

    $(document).on('click', '.update', function(){
        var staff_id = $(this).attr("id");
        var btn_action = 'fetch_single';
        $.ajax({
            url:"staff_action.php",
            method:"POST",
            data:{staff_id:staff_id, btn_action:btn_action},
            dataType:"json",
            success:function(data)
            {
                $('#staffModal').modal('show');
                $('#staff_name').val(data.staff_name);
                $('.modal-title').html("<i class='fa fa-pencil-square-o'></i> Edit Staff Information");
                $('#staff_id').val(staff_id);
                $('#action').val('Edit');
                $('#btn_action').val("Edit");
            }
        })
    });

    var staffdataTable = $('#staff_data').DataTable({
        "processing":true,
        "serverSide":true,
        "order":[],
        "ajax":{
            url:"staff_fetch.php",
            type:"POST"
        },
        "columnDefs":[
            {
                "targets":[0,5, 6],
                "orderable":false,
            },
        ],
        "pageLength": 25
    });
    $(document).on('click', '.delete', function(){
        var staff_id = $(this).attr('id');
        var status = $(this).data("status");
        var btn_action = 'delete';
        if(confirm("Are you sure you want to change status?"))
        {
            $.ajax({
                url:"staff_action.php",
                method:"POST",
                data:{staff_id:staff_id, status:status, btn_action:btn_action},
                success:function(data)
                {
                    $('#alert_action').fadeIn().html('<div class="alert alert-info">'+data+'</div>');
                    staffdataTable.ajax.reload();
                }
            })
        }
        else
        {
            return false;
        }
    });
});
</script>

<?php
include('footer.php');
?>

增加工作人员
添加
员工身份证
职员姓名
职员身份证号码
员工地址
员工电话号码
编辑
删除
&时代;
增加新员工
输入员工姓名
输入员工I/C号
输入员工地址
输入员工电话号码
接近
$(文档).ready(函数(){
$(“#添加按钮”)。单击(函数(){
$('#staff_form')[0].reset();
$('.modal title').html(“添加新员工”);
$('#action').val('Add');
$('btn_action').val('Add');
});
$(文档)。在('submit','staff_form',函数(事件){
event.preventDefault();
$('#action').attr('disabled','disabled');
var form_data=$(this).serialize();
$.ajax({
url:“staff_action.php”,
方法:“张贴”,
数据:表格数据,
成功:功能(数据)
{
$('#staff_form')[0].reset();
$('staffModal').modal('hide');
$(“#警报_操作”).fadeIn().html(“”+data+“”);
$('#action').attr('disabled',false);
staffdataTable.ajax.reload();
}
})
});
$(文档)。在('单击','更新',函数()上){
var staff_id=$(this.attr(“id”);
var btn_action='fetch_single';
$.ajax({
url:“staff_action.php”,
方法:“张贴”,
数据:{staff_id:staff_id,btn_action:btn_action},
数据类型:“json”,
成功:功能(数据)
{
$('staffModal').modal('show');
$('#staff_name').val(data.staff_name);
$('.modal title').html(“编辑员工信息”);
$('staff_id').val(staff_id);
$('动作').val('编辑');
$('btn_action').val(“编辑”);
}
})
});
var staffdataTable=$(“#员工数据”).DataTable({
“处理”:对,
“服务器端”:正确,
“订单”:[],
“ajax”:{
url:“staff_fetch.php”,
类型:“职位”
},
“columnDefs”:[
{
“目标”:[0,5,6],
“可订购”:错误,
},
],
“页面长度”:25
});
$(文档)。在('单击','删除',函数()上){
var staff_id=$(this.attr('id');
var状态=$(此).data(“状态”);
var btn_action='delete';
如果(确认(“您确定要更改状态吗?”))
{
$.ajax({
url:“staff_action.php”,
方法:“张贴”,
数据:{staff_id:staff_id,status:status,btn_action:btn_action},
成功:功能(数据)
{
$(“#警报_操作”).fadeIn().html(“”+data+“”);
staffdataTable.ajax.reload();
}
})
}
其他的
{
返回false;
}
});
});
staff_fetch.php

    <?php

//staff_fetch.php

include('database_connection.php');

$query = '';

$output = array();

$query .= "SELECT * FROM staff ";

if(isset($_POST["search"]["value"]))
{
    $query .= 'WHERE staff_name LIKE "%'.$_POST["search"]["value"].'%" ';
    $query .= 'OR staff_id LIKE "%'.$_POST["search"]["value"].'%" ';
  $query .= 'OR staff_phoneno LIKE "%'.$_POST["search"]["value"].'%" ';
    $query .= 'OR staff_identityno LIKE "%'.$_POST["search"]["value"].'%" ';
    $query .= 'OR staff_address LIKE "%'.$_POST["search"]["value"].'%" ';
}

if(isset($_POST['order']))
{
    $query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' ';
}
else
{
    $query .= 'ORDER BY staff_id DESC ';
}

if($_POST['length'] != -1)
{
    $query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}

$statement = $connect->prepare($query);

$statement->execute();

$result = $statement->fetchAll();

$data = array();

$filtered_rows = $statement->rowCount();

foreach($result as $row)
{
    $sub_array = array();
    $sub_array[] = $row['staff_id'];
    $sub_array[] = $row['staff_name'];
  $sub_array[] = $row['staff_identityno'];
    $sub_array[] = $row['staff_address'];
  $sub_array[] = $row['staff_phoneno'];
    $sub_array[] = '<button type="button" name="update" id="'.$row["staff_id"].'" class="btn btn-warning btn-xs update">Update</button>';
    $sub_array[] = '<button type="button" name="delete" id="'.$row["staff_id"].'" class="btn btn-danger btn-xs delete" data-status="'.$row["category_status"].'">Delete</button>';
    $data[] = $sub_array;
}

$output = array(
    "draw"          =>  intval($_POST["draw"]),
    "recordsTotal"      =>  $filtered_rows,
    "recordsFiltered"   =>  get_total_all_records($connect),
    "data"              =>  $data
);


function get_total_all_records($connect)
{
    $statement = $connect->prepare("SELECT * FROM staff");
    $statement->execute();
    return $statement->rowCount();
}
echo json_encode($output);

?>

在每次循环迭代中错误地将$sub_数组索引增加多次,从而错误地设置了$data的值

在staff_fetch.php中,用以下内容替换foreach循环:

$sub_array = array();
foreach($result as $row)
{
    $edit = '<button type="button" name="update" id="'.$row["staff_id"].'" class="btn btn-warning btn-xs update">Update</button>';
    $delete = '<button type="button" name="delete" id="'.$row["staff_id"].'" class="btn btn-danger btn-xs delete" data-status="'.$row["category_status"].'">Delete</button>'; 

    $sub_array[] = array(
        $row['staff_id'],
        $row['staff_name'],
        $row['staff_identityno'],
        $row['staff_address'],
        $row['staff_phoneno'],
        $edit,
        $delete
    );

}
$data = $sub_array;
$sub_array=array();
foreach($结果为$行)
{
$edit='Update';
$delete='delete';
$sub_数组[]=数组(
$row['staff_id'],
$row['staff_name'],
$row['staff_identityno'],
$row[“员工地址”],
$row['staff_phoneno'],
$edit,
$delete
);
}
$data=$sub_数组;

更新了我的答案。我尝试用你的代码替换我的代码,但结果还是出现了警告。我的其他表我使用了与此表完全相同的代码,但没有出现任何问题,例如警告datatables发生无效json响应:(我在本地测试了它,它工作正常。您能否将
staff\u fetch.php
->
错误报告(0)放在最上面
?你说的放在最上面是什么意思?对不起,我还是新来的,不明白我现在在做什么啊哈哈哈!非常感谢,所有的表格都可以完全按照我的要求查看!谢谢
$sub_array = array();
foreach($result as $row)
{
    $edit = '<button type="button" name="update" id="'.$row["staff_id"].'" class="btn btn-warning btn-xs update">Update</button>';
    $delete = '<button type="button" name="delete" id="'.$row["staff_id"].'" class="btn btn-danger btn-xs delete" data-status="'.$row["category_status"].'">Delete</button>'; 

    $sub_array[] = array(
        $row['staff_id'],
        $row['staff_name'],
        $row['staff_identityno'],
        $row['staff_address'],
        $row['staff_phoneno'],
        $edit,
        $delete
    );

}
$data = $sub_array;