WordPress中利用AJAX异步获取评论用户头像的方法


Posted in Javascript onJanuary 08, 2016

在评论者输入邮箱后,异步获得评论者的头像并显示出来,个人感觉这个功能虽不能给用户体验带来多大的提升,也不算是一个实用的功能,但至少很炫,看到有的网站有添加这个功能,我也不甘寂寞所以也写了个脚本,没有时间做封装,所以直接上原理和代码。

异步动态调用头像原理

  • 获得用户输入
  • 过滤用户输入
  • 传递变量到后台
  • 后台处理数据,并返回头像的HTML代码
  • 获得后台返回数据,将HTML代码加载到当前页面

貌似很多步骤,其实很简单,我们只要将自己的主题稍作修改就可以到达效果。

简单功能截图:

WordPress中利用AJAX异步获取评论用户头像的方法

实现

功能代码:JavaScript
以下代码需集成 JQuery 框架中。
apiurl 变量为你的php api 接口文件地址,文件代码下面有。
功能主要集中在email输入框失去焦点的动作上。

function getAvatar(authorEmail) {//获得头像代码封装函数
 var nowtime = Math.round(new Date().getTime() / 1000);
 $.get(apiurl, {
 action : "get_avatar",
 email : authorEmail,
 t : nowtime
 }, function(data) {
 $('#get-avatar-img').fadeOut('slow', function() {
 $('#get-avatar-img').html(data).fadeIn();
 })
 });
 }
 
 var avatarhtml = '<div id="get-avatar-img" style="display:none;">';
 avatarhtml += '</div>';
 $('#respond').append(avatarhtml);//添加头像HTML
 if($('#email').val().length > 1)
 getAvatar($('#email').val());//获得邮箱地址
 $('#email').focusout(function() {//email输入框失去焦点绑定的动作
 var authorEmail = $('#email').val();
 var pattern = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
 var flag = pattern.test(authorEmail);
 if(flag) {
 $('#get-avatar-img').html('载入头像中').fadeIn('fast');
 getAvatar(authorEmail);
 } else {
 alert('请输入正确邮箱地址');
 }
 })
功能代码:PHP
后台响应代码,在这里我用了一个单独的页面文件来做响应,
这样做的好处是不用打开每个页面的时候都去调用这部分代码,
只是在做出请求时才去响应,这样做可以完全摒弃主题的向后兼容顾虑。
当然你也可以将响应函数挂载到wp的hook上。
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : false ;
 
if($action){//留下以后添加功能的空间,你懂的。
 switch ($action) {
 case 'get_avatar':
 $email = isset($_REQUEST['email']) ? $_REQUEST['email']: false ;
 if($email){
 echo get_avatar($email,60);
 }
 break;
 
 default:
 echo "请求内容不充分";
 break;
 }
 }

总结
So……. 很简单吧?
请求-> 响应 -> 添加 总共三步曲。
当然,这里为了增强逻辑性,突出条理,把一些必要的数据过滤,
还有一些错误判断,这些就算是留作思考吧。

Javascript 相关文章推荐
jQuery的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
jQuery学习基础知识小结
Nov 25 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
Dec 17 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
浅谈React Native 中组件的生命周期
Sep 08 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
vue 实现小程序或商品秒杀倒计时
Apr 14 Javascript
Vue-resource安装过程及使用方法解析
Jul 21 Javascript
关于React Native 无法链接模拟器的问题
Jun 21 Javascript
学习JavaScript设计模式之状态模式
Jan 08 #Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 #Javascript
js实现对ajax请求面向对象的封装
Jan 08 #Javascript
javascript弹性运动效果简单实现方法
Jan 08 #Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 #Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 #Javascript
jquery实现简单的遮罩层
Jan 08 #Javascript
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
PHP设置进度条的方法
2015/07/08 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Python中property函数用法实例分析
2018/06/04 Python
Python爬虫文件下载图文教程
2018/12/23 Python
带你认识Django
2019/01/15 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python获取array中指定元素的示例
2019/11/26 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
什么是View State?
2013/01/27 面试题
应届毕业生求职信范文分享
2013/12/26 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
毕业寄语大全
2014/04/09 职场文书
法人委托书
2014/07/31 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis