当前位置: 首页 > 知识库问答 >
问题:

带有DataTables的PHP由于引号而给出无效的JSON响应

苏野
2023-03-14

从数据库中获取数据并通过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;
    }

共有1个答案

翟嘉年
2023-03-14

使用json_encode()函数使用JSON格式对响应进行正确编码。

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

$data = array();   
while($row = mysqli_fetch_array($query)) {
   $data[] = array(
      "allotment_code" => $row["allotment_code"],
      "activity" => $row["activity"],
      "category_name" => $row["category_name"],
      "description" => $row["description"]
   );
}

header("Content-type: application/json");
echo json_encode(array("data" => $data));
 类似资料:
  • 问题内容: 我正在使用向服务器发出请求,并且服务器正在返回JSON对象(如{ “var”: “value”, … })。但是,如果任何一个值都包含一个单引号(正确转义为'),则jQuery无法解析其他有效的JSON字符串。这是我的意思的示例(在Chrome的控制台中完成): 这正常吗?没有办法通过JSON正确传递单引号吗? 问题答案: 根据JSON网站上的状态机图,仅允许转义的双引号字符,不允许单

  • 问题内容: 样例代码: 它适用于 PHP 5.5.3, 但对于较低版本的PHP则失败 它可以在我的装有PHP 5.5.3的计算机上使用,但是在其他地方都无法使用。 我知道这是错误的JSON,但我的网络服务向我提供了带有符号的JSON 和 沙盒 如何在PHP 5.3中使用撇号解析JSON数据? 显然,我要解析的原始JSON更复杂。 (我无法在生产服务器上升级PHP,也无法从Web服务获取正确的JSO

  • 我试图通过curl与新闻提供网站进行api集成。我能够检索数据,但它不是json格式,所以很难在我的门户网站上显示该数据。 下面是我使用的代码。 请找个人帮忙 curl.php 下面是我得到的结果,如果我回显从上述代码收到的响应 {“状态”:“好的”,“总计结果”: 36,“文章”:[{“来源”:{“id”: null,“名称”:“Tmz.com”},“作者”:“TMZ工作人员”,“标题”:“90

  • 问题内容: 我正在尝试从YouTube API解析json响应数据,但我一直收到错误消息。 这是令人窒息的片段: ..发生这种情况: 我已经确认它是有效的json,并且无法控制其格式,因此如何克服此错误? 问题答案: 您需要在“”“之前添加一个,或全部替换为。从其他地方读取json时,您不必担心这件事,而是字符串本身中的事。 看到这里获取更多信息

  • 问题内容: 我通过按下按钮来调用此函数… Firebug显示我得到了这个JSON响应(我知道这是有效的)[为清楚起见,被截断了] Firebug显示错误“无效标签 https://test.com/incident.do?JSON&callback=jsonp1279049933243&sysparm_action=getRecords 第1行 我怎样才能解决这个问题?谢谢! 问题答案: 您的响应

  • 问题内容: 我所拥有的文件,每行1个JSON文件和领域和每个文件内。我想使用jq提取这些并将它们打印在同一行上。 到目前为止,我有: 这可行,但是我需要删除双引号。 为了改善我的jq-foo,有没有办法在 不使用sed的情况下 做到这一点? 例如给 得到 代替 问题答案: 默认情况下,将其输出格式化为有效的JSON值。这意味着字符串用引号引起来。 幸运的是,or 参数会覆盖该行为,因此您的字符串输