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 相关文章推荐
JS操作数据库的实例代码
Oct 17 Javascript
jquery垂直公告滚动实现代码
Dec 08 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
JS中常用的输出方式(五种)
Jun 12 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
Feb 18 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
Vue2.0用 watch 观察 prop 变化(不触发)
Sep 08 Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
学习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基础知识介绍
2013/09/17 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
CentOS安装php v8js教程
2015/02/26 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
微信小程序实现星星评价效果
2018/11/02 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
Python爬取附近餐馆信息代码示例
2017/12/09 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
详解python pandas 分组统计的方法
2019/07/30 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
购买一个高级域名:BuyDomains
2018/03/11 全球购物
管理学专业个人求职信范文
2013/12/13 职场文书
高二生物教学反思
2014/01/27 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
财务会计岗位职责
2015/02/03 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
交通事故案件代理词
2015/05/23 职场文书
培养联系人考察意见
2015/06/01 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
MYSQL常用函数介绍
2022/05/05 MySQL
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL