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 相关文章推荐
JavaScript学习笔记(一) js基本语法
Oct 25 Javascript
jQuery中not()方法用法实例
Jan 06 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
js实现登录验证码
Dec 22 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
Bootstrap导航简单实现代码
Mar 06 Javascript
React服务端渲染(总结)
Jul 01 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
May 07 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
Dec 06 Javascript
AngularJs中$cookies简单用法分析
May 30 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
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
JavaScript 注册事件代码
2011/01/27 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
软件测试笔试题
2012/10/25 面试题
药剂专业学生求职信范文
2013/12/28 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
离婚协议书范文2014
2014/10/16 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
react如何快速设置文件路径别名
2021/04/28 Javascript
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis
Python实现视频中添加音频工具详解
2021/12/06 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python