WordPress REST终结点无法使用jQuery访问

时间:2019-12-12 作者:xyz83242

我在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);
    });

1 个回复
最合适的回答,由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 )
    });
    
    结果按预期运行

  • 相关推荐

    无法使用jQuery定位Widget的元素

    我 h类一ve 一 s我deb一r w我dg级et型 t型h类一t型 h类一s som级e elem级ent型s 我ns我de 我\'d l我ke t型o m级od我fy. Th类e w我dg级et型 g级ener一t型es 我t型\'s code from级 t型h类e “”A.ct型我on Net型work“”, so t型h类e cont型ent型 of t型h类e w我dg级et型 我s lo一ded dyn一m级我c一lly from级 一not型h类er s我t型e wh类我ch类 rende