【发布时间】:2014-01-13 08:51:01
【问题描述】:
我有一个 ajax 调用调用一个 php 文件,该文件运行一个长 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);
JSON.parse()之前来自控制台的ajax响应:
{
"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
}
【问题讨论】:
-
你试过 var_dump
json_encode($answer);吗? -
@MarkusKottländer,之前没有尝试过。现在做了,得到一个 JS 错误:
Uncaught SyntaxError: Unexpected token s在这一行:var object = JSON.parse(response); -
是的,当然,我只是想测试 json_encode() 的行为。为此直接调用您的 php 脚本。此外 json_encode 仅适用于 utf8 编码,我不知道其他编码的行为。
-
@MarkusKottländer,当我直接调用 php 时,我得到 String(487)... HTML 又是
NULL。最后一部分是,"statHTML":null}" -
试试
json_encode(utf8_encode($answer));。对我来说似乎是一个编码问题。