WordPress中利用AJAX異步獲取評(píng)論用戶頭像的方法
在評(píng)論者輸入郵箱后,異步獲得評(píng)論者的頭像并顯示出來(lái),個(gè)人感覺(jué)這個(gè)功能雖不能給用戶體驗(yàn)帶來(lái)多大的提升,也不算是一個(gè)實(shí)用的功能,但至少很炫,看到有的網(wǎng)站有添加這個(gè)功能,我也不甘寂寞所以也寫(xiě)了個(gè)腳本,沒(méi)有時(shí)間做封裝,所以直接上原理和代碼。
異步動(dòng)態(tài)調(diào)用頭像原理
- 獲得用戶輸入
- 過(guò)濾用戶輸入
- 傳遞變量到后臺(tái)
- 后臺(tái)處理數(shù)據(jù),并返回頭像的HTML代碼
- 獲得后臺(tái)返回?cái)?shù)據(jù),將HTML代碼加載到當(dāng)前頁(yè)面
貌似很多步驟,其實(shí)很簡(jiǎn)單,我們只要將自己的主題稍作修改就可以到達(dá)效果。
簡(jiǎn)單功能截圖:

實(shí)現(xiàn)
功能代碼:JavaScript
以下代碼需集成 JQuery 框架中。
apiurl 變量為你的php api 接口文件地址,文件代碼下面有。
功能主要集中在email輸入框失去焦點(diǎn)的動(dòng)作上。
function getAvatar(authorEmail) {//獲得頭像代碼封裝函數(shù)
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輸入框失去焦點(diǎn)綁定的動(dòng)作
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('請(qǐng)輸入正確郵箱地址');
}
})
后臺(tái)響應(yīng)代碼,在這里我用了一個(gè)單獨(dú)的頁(yè)面文件來(lái)做響應(yīng),
這樣做的好處是不用打開(kāi)每個(gè)頁(yè)面的時(shí)候都去調(diào)用這部分代碼,
只是在做出請(qǐng)求時(shí)才去響應(yīng),這樣做可以完全摒棄主題的向后兼容顧慮。
當(dāng)然你也可以將響應(yīng)函數(shù)掛載到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 "請(qǐng)求內(nèi)容不充分";
break;
}
}
總結(jié)
So……. 很簡(jiǎn)單吧?
請(qǐng)求-> 響應(yīng) -> 添加 總共三步曲。
當(dāng)然,這里為了增強(qiáng)邏輯性,突出條理,把一些必要的數(shù)據(jù)過(guò)濾,
還有一些錯(cuò)誤判斷,這些就算是留作思考吧。
- Ajax通過(guò)XML異步提交的方法實(shí)現(xiàn)從數(shù)據(jù)庫(kù)獲取省份和城市信息實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)(xml方法)
- ajax 異步獲取數(shù)據(jù)實(shí)現(xiàn)代碼 (js創(chuàng)建ajax對(duì)象)
- jQuery Ajax異步處理Json數(shù)據(jù)詳解
- jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
- jquery ajax屬性async(同步異步)示例
- Ajax請(qǐng)求中的異步與同步,需要注意的地方說(shuō)明
- jquery的ajaxSubmit()異步上傳圖片并保存表單數(shù)據(jù)演示代碼
- 詳談 Jquery Ajax異步處理Json數(shù)據(jù).
- ajax異步刷新實(shí)現(xiàn)更新數(shù)據(jù)庫(kù)
- Ajax異步獲取html數(shù)據(jù)中包含js方法無(wú)效的解決方法
相關(guān)文章
JavaScript時(shí)間戳與時(shí)間日期間相互轉(zhuǎn)換
今天做項(xiàng)目遇到這樣的問(wèn)題,要將獲取到的時(shí)間轉(zhuǎn)換為時(shí)間戳,通過(guò)查閱相關(guān)資料,問(wèn)題順利解決,下面小編把具體實(shí)現(xiàn)代碼分享到腳本之家平臺(tái),需要的朋友參考下2017-12-12
JavaScript實(shí)現(xiàn)移動(dòng)端輪播效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)移動(dòng)端輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
微信小程序?qū)崿F(xiàn)側(cè)邊欄二級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)側(cè)邊欄二級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
微信小程序?qū)崿F(xiàn)倒計(jì)時(shí)調(diào)用相機(jī)自動(dòng)拍照功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)倒計(jì)時(shí)調(diào)用相機(jī)自動(dòng)拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
js實(shí)現(xiàn)遮罩層劃出效果是生成div而不是顯示
單純的遮蓋層劃出是比較簡(jiǎn)單的,而本例介紹的這個(gè)就有點(diǎn)難度,生成div,而不是顯示存在的div,需要的朋友可以參考下2014-07-07
js獲取多個(gè)tagname的節(jié)點(diǎn)數(shù)組
寫(xiě)了個(gè)獲取多個(gè)tagname節(jié)點(diǎn)集合的小方法。類似于jQuery的$(‘iput,select,textarea’,'#form’)的效果,返回是按節(jié)點(diǎn)在原有文檔流中的順序返回的2013-09-09
js實(shí)現(xiàn)的點(diǎn)擊數(shù)量加一可操作數(shù)據(jù)庫(kù)
這篇文章主要介紹了js如何實(shí)現(xiàn)的點(diǎn)擊數(shù)量加一操作數(shù)據(jù)庫(kù),需要的朋友可以參考下2014-05-05
JavaScript實(shí)現(xiàn)動(dòng)態(tài)留言板
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)留言板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧詳解
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧詳解,本文講解了對(duì)棧的操作、對(duì)棧的實(shí)現(xiàn)實(shí)例等內(nèi)容,需要的朋友可以參考下2015-03-03

