自定义REST API端点响应json问题

时间:2017-09-01 作者:dev-jim

我使用的是WP 4.6,rest api尚未包含在核心中。但我仍然可以使用rest_api_init 创建api端点。问题是如何将端点响应更改为正确的json格式?

这就是我所做的。

add_action( \'rest_api_init\', function () {
  register_rest_route( \'news/v1\', \'/latest\', array(
    \'methods\' => "GET",
    \'callback\' =>\'get_latest_posts_api\',
  ) );
} );

function get_latest_posts_api($data ){
    $data = array(
                   \'title\' => \'test title\',
                   \'content\' => \'blah blah blah......\'
    );
   return  rest_ensure_response($data);
}
当我调用另一个wp站点中的端点时,什么都没有得到。

$recent_posts = wp_remote_get("http://xxxx.com/wp-json/news/v1/latest/");
$i = 1;

print_r(json_decode($recent_posts[\'body\'], true));//this give me nothing
 echo $recent_posts[\'body\']; //this give me the raw data though. 
当我直接在firefox上打开时,它会显示SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

问题是什么?

UPDATE

我添加了要返回的数据数组,但仍然得到了错误。

UPDATE

使用调试json_last_error() 在解码响应时,它给了我JSON_ERROR_SYNTAX 错误但我不明白,我想register_rest_route 是否已处理转换为json?

我还尝试了在回调函数中使用json编码,但仍然得到了这个错误。

我迷路了。

1 个回复
最合适的回答,由SO网友:dev-jim 整理而成

事实证明,这是由我包含的一个文件中的BOM字符引起的。如果您有相同的问题,可以将文件保存为UTF8编码,无需BOM表。

结束

相关推荐

将JSON数据从WP查询传递到AJAX导致空错误

我当前正在使用WP_Query 这将在按下按钮时从AJAX调用触发。post元字段lat lng 将用作谷歌地图的位置数据。没有AJAX,查询输出很好,但似乎无法让它返回结果。我收到的回复-[{name: \"\", lng: null, lat: null}, {name: \"\", lng: null, lat: null}]现在,我认为错误在于在以下位置将结果转换为JSONjson_encode 阶段,但不太确定?任何帮助都会很好,对AJAX来说都是全新的!Function.php<?php