PHP生成无效的JSON

时间:2015-07-14 18:09:53

标签: jquery json datatables

我有以下JSON字符串,当通过jQuery AJAX调用从HTML文件调用时,我通过echo从PHP文件传递。

该字符串包含HTML,该HTML被送入DataTables单元格。返回的JSON似乎将</解释为换行符,因为它插入了ASCII 10和13(每个文本到ASCII转换网站),这导致DataTables将其视为无效的JSON。

我不清楚是什么产生错位的ASCII。

HTML(DataTables加载):

var mydatatable = $("#myassets").DataTable(
{
    "ajax": "../php/fetchmydata.php",
    "type": "POST",
    "dataType": "json",
    "columns": [
        {"data":"teamName","width":"30%"},
        {"data":"teamImg","width":"20%"},           
        {"data":"cluesFoundCount","width":"5%"},
        {"data":"assets","width":"30%"},
        {"data":"scores","width":"5%"}
    ]
});//end dataTable

PHP(fetchmydata.php):

$myjson = '{"teamName":"<div class=\'teamblock\'><span class=\'bold\'>' . $row['TeamName'] . '</span><div>rick</div></div>"';
$myjson.='}';
echo '{"data":[' . $myjson . ']}';

return $myjson;

2 个答案:

答案 0 :(得分:0)

您需要使用json_encode来避免错误。

请改用以下代码:

$data = array(
   "data" => array(
      array(
         "teamName" =>
            '<div class="teamblock"><span class="bold">' . 
            $row['TeamName'] . 
            '</span><div>rick</div></div>',
         "teamImg" => "",
         "cluesFoundCount" => "",
         "assets" => "",
         "scores" => ""
      )
   )
);

echo json_encode($data);

但是为避免通过Ajax传递大量数据,建议使用columns.render选项在客户端生成HTML。

答案 1 :(得分:-1)

<div>标记生成ASCII 10和13.我将div更改为span,并且JSON正确呈现。