WordPress中利用AJAX异步获取评论用户头像的方法
作者:bea
在评论者输入邮箱后,异步获得评论者的头像并显示出来,个人感觉这个功能虽不能给用户体验带来多大的提升,也不算是一个实用的功能,但至少很炫,看到有的网站有添加这个功能,我也不甘寂寞所以也写了个脚本,没有时间做封装,所以直接上原理和代码。 异步动态调用头像原理 获得用户输入 过滤用户输入 传递变量到后台 后台处理数据,并返回头像的HTML代码 获得后台返回数据,将HTML代码加载到当前页面 貌似很多步骤,其实很简单,我们只要将自己的主题稍作修改就可以到达效果。 简单
在评论者输入邮箱后,异步获得评论者的头像并显示出来,个人感觉这个功能虽不能给用户体验带来多大的提升,也不算是一个实用的功能,但至少很炫,看到有的网站有添加这个功能,我也不甘寂寞所以也写了个脚本,没有时间做封装,所以直接上原理和代码。
异步动态调用头像原理
获得用户输入
过滤用户输入
传递变量到后台
后台处理数据,并返回头像的HTML代码
获得后台返回数据,将HTML代码加载到当前页面
貌似很多步骤,其实很简单,我们只要将自己的主题稍作修改就可以到达效果。
简单功能截图:
实现
功能代码: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……. 很简单吧? 请求-> 响应 -> 添加 总共三步曲。 当然,这里为了增强逻辑性,突出条理,把一些必要的数据过滤, 还有一些错误判断,这些就算是留作思考吧。
有用 | 无用
异步动态调用头像原理
获得用户输入
过滤用户输入
传递变量到后台
后台处理数据,并返回头像的HTML代码
获得后台返回数据,将HTML代码加载到当前页面
貌似很多步骤,其实很简单,我们只要将自己的主题稍作修改就可以到达效果。
简单功能截图:
实现
功能代码: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……. 很简单吧? 请求-> 响应 -> 添加 总共三步曲。 当然,这里为了增强逻辑性,突出条理,把一些必要的数据过滤, 还有一些错误判断,这些就算是留作思考吧。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- 分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
- 理解Angular数据双向绑定
- JavaScript表单验证实例之验证表单项是否为空
- JavaScript电子时钟倒计时第二款
- 基于javascript实现彩票随机数生成(简单版)
- Node.js静态文件服务器改进版
- 实例讲解javascript注册事件处理函数
- 详解javascript事件冒泡
- js父页面中使用子页面的方法
- jquery调整表格行tr上下顺序实例讲解
- 实例讲解js验证表单项是否为空的方法
- 小心!AngularJS结合RequireJS做文件合并压缩的那些坑
- javascript跑马灯抽奖实例讲解
- jQuery页面刷新(局部、全部)问题分析
- javascript返回顶部的按钮实现方法
- javascript类型系统 Array对象学习笔记
- JS中生成随机数的用法及相关函数
- JavaScript电子时钟倒计时
- bootstrap-treeview自定义双击事件实现方法