网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

WORDPRESS自定义API接口,在JS文件里用$.AJAX读取失败,帮看看代码

GG网络技术分享 2025-03-18 16:12 6


问题描述:

认真请教个问题!折磨了我几个通宵!没搞定!
作为一名英语老师,主要是因为wordpress而热爱上php,css,js等程序,属于瞎折腾,纯属业余爱好。
目标:用页面引用js,js读取wordpress的REST API,获得最新评论列表,显示在前台。

js需要的数据格式如下:

var data = [

{href : '#',text : '测试文本'},

]

而且直接在js里加入上面这段,前端就能正常显示。
查阅百度,利用下面的代码,好像也可以读取wordpress的API:

$.ajax({

type: "POST",

data: {},

url: 'http://localhost/wp-json/myapi/test', //api地址

success: function(data) {

// 数据初始化

var Obj = $('body').barrage({

data : data, //数据列表

row : 2, //显示行数,初始为5 time : 3000, //间隔时间,初始为1500 gap : 15, //每一个的间隙,初始为15

position : 'fixed', //绝对定位,初始为

direction : 'bottom right', //方向,初始为bottom right

ismoseoverclose : true, //悬浮是否停止,初始为true

height : 30, //设置单个div的高度,初始为30

})

Obj.start();

}

});

于是,我就在主题的functions.php里自定义了API测试接口,代码如下:

//自定义REST API接口

add_action( 'rest_api_init', 'popup_comments_rest_register_route' );

function popup_comments_rest_register_route() {

register_rest_route( 'a', 'b', [

'methods' => 'POST',

'callback' => 'popup_comments'

] );

}

function popup_comments() {

$out = array(

'href' => '#',

'text' => '测试文本',

);

//print json_encode($out);

//return $out;

//print json_encode(array('status'=>200,'href'=>$out,'text'=>$out));

//unset($out);

//exit;

//die();

echo $out;

wp_die();

}

在网页上,访问http://localhost/wp-json/myapi/test
用'methods' => 'GET', 可以输出在页面上显示 {href : '#',text : '测试文本'}
然后修改回 'methods' => 'POST',再测试前端,还是不能显示!

个人感觉是REST API接口没配置好,或者$.AJAX没用好?
麻烦各位,给以指导,给个启发!感谢!

另:用wordpress默认的API链接,V2和V1版本有啥不同,用默认的API怎么能保持数据结构只要href和text
http://localhost/wp-json/wp/v2/comments可以拉出很多内容
http://localhost/wp-json/b2/v1/getnewcomments默认显示没有route

网友观点:

get得到数据干嘛要改post请求?post的话有些接口可能不支持post请求改post会出错。

改直接get请求,而且示例数据是json数组,题主返回json格式也不对的,改成下面这样

$.ajax({

type: "get",//改为get请求

data: {},

url: 'http://localhost/wp-json/myapi/test', //api地址

success: function(data) {

data=[data];/////////变为数组 // 数据初始化

var Obj = $('body').barrage({

data : data, //数据列表 row : 2, //显示行数,初始为5 time : 3000, //间隔时间,初始为1500 gap : 15, //每一个的间隙,初始为15 position : 'fixed', //绝对定位,初始为 direction : 'bottom right', //方向,初始为bottom right ismoseoverclose : true, //悬浮是否停止,初始为true height : 30, //设置单个div的高度,初始为30

})

Obj.start();

}

});

###

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

标签:

提交需求或反馈

Demand feedback