由于引号,带有DataTables的PHP提供了无效的JSON响应

时间:2018-01-02 11:01:54

标签: php jquery mysql json datatables

我在从数据库中获取数据时遇到问题,并通过DataTables显示。我发现我的大多数数据都有单引号和双引号以及其他特殊字符。我在PHP中尝试了每个转义函数,但它没有用。 addslashes 仅检索40,000个数据中的59个数据。到目前为止,我有这个代码:

PHP:

$query = mysqli_query($new_conn, "SELECT * FROM bill_of_materials");

$table = '';

while($row = mysqli_fetch_array($query)) {


    $table.= '{
        "allotment_code":"'.$row['allotment_code'].'",
        "activity":"'.$row['activity'].'",
        "category_name":"'.addslashes($row['category_name']).'",
        "description":"'.addslashes($row['description']).'"
    },';
}


$table = substr($table,0, strlen($table) - 1);

echo '{"data":['.$table.']}';


**jQuery data tables:**

    $(function() {

        $('#dataTables-example').DataTable( {
            "bLengthChange": false,
            "pageLength": 50,
            "bDeferRender": true,
            "bProcessing": true,
            "sPaginationType": "full_numbers",
            "ajax": base_url('ajax/ajaxGetBOM.php'),
            "columns":[
                {mData: "allotment_code"},
                {mData: "activity"},
                {mData: "category_name"},
                {mData: "description"}
            ],
            contentType: 'application/json',
            dataType: 'json'
        });
    })

    function base_url(path) {

        var url = 'https://192.168.3.254/'+path;
        return url;
    }

错误是这样的: enter image description here

1 个答案:

答案 0 :(得分:2)

使用json_encode()函数使用JSON格式正确编码您的响应。

.fillna("Other")