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 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
jQuery采用连缀写法实现的折叠菜单效果
Sep 18 Javascript
jQuery图片左右滚动代码 有左右按钮实例
Jun 20 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
浅谈Vue.js路由管理器 Vue Router
Aug 16 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
vue中的过滤器实例代码详解
Jun 06 Javascript
Vue内部渲染视图的方法
Sep 02 Javascript
vue点击页面空白处实现保存功能
Nov 06 Javascript
vue2路由基本用法实例分析
Mar 06 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
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
Vue组件开发初探
2017/02/14 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python中实现switch功能实例解析
2018/01/11 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python动态文本进度条的实例代码
2020/01/22 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
旷课检讨书2000字
2014/01/14 职场文书
服装设计师求职信
2014/06/04 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
新郎接新娘保证书
2015/05/08 职场文书
感恩的心主题班会
2015/08/12 职场文书
2019教师的学习计划
2019/06/25 职场文书