我在WordPress中有REST端点,我正在尝试使用前面脚本中的jQuery ping它。当通过浏览器询问时,此选项有效:http://example.com/wp-json/wpc_ylp/v2/videos/
但当我试图用jQuery从前端访问它时,它不起作用。我尝试了不同的AJAX请求,但没有得到任何响应。有人知道我做错了什么吗?
此处为Rest端点:
// REST END POINT FOR THE VIDEOS
function wpc_ylp_rest_videos( ) {
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
$myJSON = json_encode($myObj);
echo $myJSON;
}
add_action( \'rest_api_init\', function () {
register_rest_route( \'wpc_ylp/v2\', \'/videos\', array(
\'methods\' => \'GET\',
\'callback\' => \'wpc_ylp_rest_videos\',
) );
} );
jQuery AJAX尝试到达端点:
jQuery.get( target = \'/wp-json/wpc_ylp/v2/videos/\', function( data ) {
console.log( \'DATA\',data )
});
或
jQuery.ajax({
url: \'/wp-json/wpc_ylp/v2/videos\'
}).done(function( data ) {
console.log(\'dataxxx\',data);
});
最合适的回答,由SO网友:Tom J Nowell 整理而成
首先,让我们修复您的端点:
function wpc_ylp_rest_videos( ) {
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
$myJSON = json_encode($myObj);
echo $myJSON;
}
这里有几个问题:
REST API端点的回调旨在返回其数据,如短代码。REST API进行JSON编码,您不需要echo
$myObj
似乎不知从何而来,这将生成大量PHP通知和错误。永远不要这样做,PHP将不得不填补空白,依靠计算机“理解你的意思”很少奏效。实际上,给你的第一个参数允许你读入参数,而不是使用$_GET
或$_POST
, 这样,您就可以使用许多功能,最好是这样:function wpc_ylp_rest_videos( $request ) {
return [
\'name\' => \'John\',
\'age\' => 30,
\'city\' => \'New York\',
];
}
其次,我用以下代码测试了您的AJAX请求代码:jQuery.get( \'/wp-json/wp/v2/posts/\', function( data ) {
console.log( \'DATA\',data )
});
结果按预期运行