我想从PHP脚本返回JSON。
我只是重复结果吗?我必须设置内容类型头吗?
我想从PHP脚本返回JSON。
我只是重复结果吗?我必须设置内容类型头吗?
当前回答
如果你在WordPress中这样做,那么有一个简单的解决方案:
add_action( 'parse_request', function ($wp) {
$data = /* Your data to serialise. */
wp_send_json_success($data); /* Returns the data with a success flag. */
exit(); /* Prevents more response from the server. */
})
请注意,这不在wp_head钩子中,该钩子将始终返回大部分头部,即使您立即退出。parse_request在序列中出现得更早。
其他回答
如上所述:
header('Content-Type: application/json');
会完成这项工作。但请记住:
即使没有使用这个报头,Ajax读取json也没有问题,除非您的json包含一些HTML标记。在这种情况下,您需要将头文件设置为application/json。 确保您的文件不是用UTF8-BOM编码的。这种格式在文件顶部添加了一个字符,因此header()调用将失败。
用header(' content -type: application/json')设置内容类型;然后对数据进行回显。
如果你查询一个数据库,需要JSON格式的结果集,可以这样做:
<?php
$db = mysqli_connect("localhost","root","","mylogs");
//MSG
$query = "SELECT * FROM logs LIMIT 20";
$result = mysqli_query($db, $query);
//Add all records to an array
$rows = array();
while($row = $result->fetch_array()){
$rows[] = $row;
}
//Return result to jTable
$qryResult = array();
$qryResult['logs'] = $rows;
echo json_encode($qryResult);
mysqli_close($db);
?>
有关使用jQuery解析结果的帮助,请参阅本教程。
如果你在WordPress中这样做,那么有一个简单的解决方案:
add_action( 'parse_request', function ($wp) {
$data = /* Your data to serialise. */
wp_send_json_success($data); /* Returns the data with a success flag. */
exit(); /* Prevents more response from the server. */
})
请注意,这不在wp_head钩子中,该钩子将始终返回大部分头部,即使您立即退出。parse_request在序列中出现得更早。
如果你想要js对象,使用头content-type:
<?php
$data = /** whatever you're serializing **/;
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);
如果你只想要json: remove header content-type属性,只需要encode和echo。
<?php
$data = /** whatever you're serializing **/;
echo json_encode($data);