WORDPRESS自定义API接口,在JS文件里用$.AJAX读取失败,帮看看代码
问题描述:
认真请教个问题!折磨了我几个通宵!没搞定!
作为一名英语老师,主要是因为wordpress而热爱上php,css,js等程序,属于瞎折腾,纯属业余爱好。
目标:用页面引用js,js读取wordpress的REST API,获得最新评论列表,显示在前台。
js需要的数据格式如下:
1 2 3 4 |
<span>var</span> <span>data</span> = [ {href : <span>'#'</span>,text : <span>'测试文本'</span>}, ] |
而且直接在js里加入上面这段,前端就能正常显示。
查阅百度,利用下面的代码,好像也可以读取wordpress的API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$.ajax({ type: <span>"POST"</span>, data: {}, url: <span>'http://localhost/wp-json/myapi/test'</span>, <span>//</span>api地址 success: <span>function</span>(data) { <span>//</span> 数据初始化 var Obj = $(<span>'body'</span>).barrage({ data : data, <span>//</span>数据列表 row : <span>2</span>, <span>//</span>显示行数,初始为<span>5</span> time : <span>3000</span>, <span>//</span>间隔时间,初始为<span>1500</span> gap : <span>15</span>, <span>//</span>每一个的间隙,初始为<span>15</span> position : <span>'fixed'</span>, <span>//</span>绝对定位,初始为 direction : <span>'bottom right'</span>, <span>//</span>方向,初始为bottom right ismoseoverclose : true, <span>//</span>悬浮是否停止,初始为true height : <span>30</span>, <span>//</span>设置单个div的高度,初始为<span>30</span> }) Obj.start(); } }); |
于是,我就在主题的functions.php里自定义了API测试接口,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<span>//</span>自定义REST API接口 add_action( <span>'rest_api_init'</span>, <span>'popup_comments_rest_register_route'</span> ); <span>function</span> popup_comments_rest_register_route() { register_rest_route( <span>'a'</span>, <span>'b'</span>, [ <span>'methods'</span> => <span>'POST'</span>, <span>'callback'</span> => <span>'popup_comments'</span> ] ); } <span>function</span> popup_comments() { <span>$out</span> = array( <span>'href'</span> => <span>'#'</span>, <span>'text'</span> => <span>'测试文本'</span>, ); <span>//</span>print json_encode(<span>$out</span>); <span>//</span>return <span>$out</span>; <span>//</span>print json_encode(array(<span>'status'</span>=><span>200</span>,<span>'href'</span>=><span>$out</span>,<span>'text'</span>=><span>$out</span>)); <span>//u</span>nset(<span>$out</span>); <span>//</span><span>exit</span>; <span>//</span>die(); echo <span>$out</span>; 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格式也不对的,改成下面这样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$.ajax({ type: <span>"get"</span>,<span>//改为get请求</span> <span>data</span>: {}, url: <span>'http://localhost/wp-json/myapi/test'</span>, <span>//api地址</span> success: function(<span>data</span>) { <span>data</span>=[<span>data</span>];<span>/////////变为数组</span> <span>// 数据初始化</span> <span>var</span> Obj = $(<span>'body'</span>).barrage({ <span>data</span> : <span>data</span>, <span>//数据列表</span> row : <span>2</span>, <span>//显示行数,初始为5</span> time : <span>3000</span>, <span>//间隔时间,初始为1500</span> gap : <span>15</span>, <span>//每一个的间隙,初始为15</span> position : <span>'fixed'</span>, <span>//绝对定位,初始为</span> direction : <span>'bottom right'</span>, <span>//方向,初始为bottom right</span> ismoseoverclose : <span>true</span>, <span>//悬浮是否停止,初始为true</span> height : <span>30</span>, <span>//设置单个div的高度,初始为30</span> }) Obj.start(); } }); |
###
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » WORDPRESS自定义API接口,在JS文件里用$.AJAX读取失败,帮看看代码