我有一些存储在数据库中的html。我正在使用以下代码检索它:
include('globals.php');
$callback = isset($_REQUEST['callback'])?$_REQUEST['callback']:FALSE;
$page_id=$_REQUEST['page_id'];
$result = $mysqli->query("SELECT html FROM pages WHERE page_id=$page_id")->fetch_object();
$html = $result->html;
$output = array("html"=>$html);
if($callback){
header('Content-Type: text/javascript');
echo $callback . '(' . json_encode($output) . ');';
} else {
header('Content-Type: application/json');
echo json_encode($output);
}
json_encode简单地返回{“html”:null}如果我回显出$ html变量本身的html代码就在那里。但是,如果我在设置它之后立即为$ output输出了一个echo,我得到Array(“html”:null)。因此,当html被写入数组时会发生一些事情。
答案 0 :(得分:0)
在一个有点相关的线程上挖掘并找到答案。答案可以在这里找到:https://stackoverflow.com/a/1972335/469219
它使用较旧的mysql_query语法而不是较新的mysqli。我的更新代码如下所示:
include('globals.php');
$callback = isset($_REQUEST['callback'])?$_REQUEST['callback']:FALSE;
$page_id=$_REQUEST['page_id'];
$mysqli->set_charset('utf8');
$result = $mysqli->query("SELECT html FROM pages WHERE page_id=$page_id")->fetch_object();
$html = $result->html;
$output = array("html"=>$html);
if($callback){
header('Content-Type: text/javascript');
echo $callback . '(' . json_encode($output) . ');';
} else {
header('Content-Type: application/json');
echo json_encode($output);
}
注意新行$mysqli->set_charset('utf8');