来自json_encode的JSON对象中的HTML为NULL

Rik*_*ard 4 php json utf-8

我有一个调用php文件的ajax调用,该文件运行一个长PHP函数,它返回一个JSON编码的数组/对象.现在我需要将HTML也发送到ajax响应中.我想过在数组中发送HTML.

这是一个好习惯吗?

现在我无法使它工作,我获得了NULL该属性的值.不知道为什么.

$statHTML = '<table>';
foreach ($toHTML as $key=>$value) {
    $statHTML.= '
        <tr class="'.$key.'">
            <td class="side">'.$value[0].'</td>
            <td>'.$value[2].' '.$value[1].'</td>
        </tr>';
}
$statHTML.= '</table>';
//  echo $statHTML;   // - this works
//function return   
$answer = array('mostSearched'=>$mostSearched,
                'timeOfDay' => $timeOfDay,
                'mostSearchedDays'=>$mostSearchedDays,
                'statHTML' => $statHTML                 
            );
return json_encode($answer);
Run Code Online (Sandbox Code Playgroud)

来自控制台的ajax响应JSON.parse():

{
    "mostSearched": {
        "title": "Most serached houses",
        "colNames": [21],
        "rowNames": [2013],
        "rows": [1]
    },
    "timeOfDay": {
        "title": "Time of search",
        "colNames": ["07:30"],
        "rowNames": ["07:30"],
        "rows": [
            [1]
        ]
    },
    "mostSearchedDays": {
        "title": "Most searched days",
        "colNames": ["2013-12-21", "2013-12-22", "2013-12-23", "2013-12-24", "2013-12-25", "2013-12-26", "2013-12-27"],
        "rowNames": ["2013-12-21", "2013-12-22", "2013-12-23", "2013-12-24", "2013-12-25", "2013-12-26", "2013-12-27"],
        "rows": [
            [1, 1, 1, 1, 1, 1, 1]
        ]
    },
    "statHTML": null
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*der 8

来自php.net:

参数

正在编码的值.可以是除资源之外的任何类型.

所有字符串数据必须采用UTF-8编码.

所以使用:

$answer = array('mostSearched'=>$mostSearched,
        'timeOfDay' => $timeOfDay,
        'mostSearchedDays'=>$mostSearchedDays,
        'statHTML' => utf8_encode($statHTML)
);

return json_encode($answer);
Run Code Online (Sandbox Code Playgroud)