0

データベースに保存したいくつかの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 のエコーを配置すると、Array("html":null) が取得されます。そのため、html が配列に書き込まれているときに何かが起こっています。

4

1 に答える 1

0

掘り下げて、いくぶん関連するスレッドで答えを見つけました。その答えはここで見つけることができます:https ://stackoverflow.com/a/1972335/469219

新しいmysqliの代わりに古いmysql_query構文を使用します。更新されたコードは次のようになります。

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');

于 2013-03-21T20:22:28.287 に答える