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 相关文章推荐
Ext面向对象开发实践(续)
Nov 18 Javascript
Javascript 获取字符串字节数的多种方法
Jun 02 Javascript
JS getStyle获取最终样式函数代码
Apr 01 Javascript
document.getElementById介绍
Sep 13 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
编程语言JavaScript简介
Oct 16 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
多种方式实现js图片预览
Dec 12 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
Jul 18 Javascript
如何在微信小程序中实现Mixins方案
Jun 20 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
JavaScript事件列表解说
2006/12/22 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
Javascript获取某个月的天数
2018/05/30 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
Python中文编码那些事
2014/06/25 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
利用python实现数据分析
2017/01/11 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
怎样声明接口
2014/09/19 面试题
2014年三八妇女节活动方案
2014/02/28 职场文书
国培计划培训感言
2014/03/11 职场文书
学习作风建设心得体会
2014/10/22 职场文书
英文邀请函
2015/02/02 职场文书
图神经网络GNN算法
2022/05/11 Python