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 相关文章推荐
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
Mar 12 Javascript
jQuery实现 注册时选择阅读条款 左右移动
Apr 11 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
Sep 11 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
Bootstrap基本模板的使用和理解1
Dec 14 Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
Nov 25 Javascript
深入理解Node内建模块和对象
Mar 12 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之第七天
2006/10/09 PHP
smarty section简介与用法分析
2008/10/03 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
js获取变量
2006/08/24 Javascript
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
javascript XML数据显示为HTML一例
2008/12/23 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
一分钟理解js闭包
2016/05/04 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
创新型城市实施方案
2014/03/06 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
经理岗位职责
2015/02/02 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
python中的3种定义类方法
2021/11/27 Python
使用HttpSessionListener监听器实战
2022/03/17 Java/Android