ECSHOP中實(shí)現(xiàn)ajax彈窗登錄功能
在上篇文章給大家介紹了使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果,大家點(diǎn)擊參考下
下面介紹如何實(shí)現(xiàn)AJAX彈窗登錄。
在ECSHOP中的user.PHP中有處理用戶登錄的請求。
/* 處理 ajax 的登錄請求 */ elseif ($action == 'signin') { include_once('includes/cls_json.php'); $json = new JSON; $username = !empty($_POST['username']) ? json_str_iconv(trim($_POST['username'])) : ''; $password = !empty($_POST['password']) ? trim($_POST['password']) : ''; $captcha = !empty($_POST['captcha']) ? json_str_iconv(trim($_POST['captcha'])) : ''; $result = array('error' => 0, 'content' => ''); $captcha = intval($_CFG['captcha']); if (($captcha & CAPTCHA_LOGIN) && (!($captcha & CAPTCHA_LOGIN_FAIL) || (($captcha & CAPTCHA_LOGIN_FAIL) && $_SESSION['login_fail'] > 2)) && gd_version() > 0) { if (empty($captcha)) { $result['error'] = 1; $result['content'] = $_LANG['invalid_captcha']; die($json->encode($result)); } /* 檢查驗(yàn)證碼 */ include_once('includes/cls_captcha.php'); $validator = new captcha(); $validator->session_word = 'captcha_login'; if (!$validator->check_word($_POST['captcha'])) { $result['error'] = 1; $result['content'] = $_LANG['invalid_captcha']; die($json->encode($result)); } } if ($user->login($username, $password)) { update_user_info(); //更新用戶信息 recalculate_price(); // 重新計(jì)算購物車中的商品價(jià)格 $smarty->assign('user_info', get_user_info()); $ucdata = empty($user->ucdata)? "" : $user->ucdata; $result['ucdata'] = $ucdata; $result['content'] = $smarty->fetch('library/member_info.lbi'); } else { $_SESSION['login_fail']++; if ($_SESSION['login_fail'] > 2) { $smarty->assign('enabled_captcha', 1); $result['html'] = $smarty->fetch('library/member_info.lbi'); } $result['error'] = 1; $result['content'] = $_LANG['login_failure']; } die($json->encode($result)); }
把上面這段代碼修改一下,刪掉需要驗(yàn)證碼的部分
改成
/* 處理 ajax彈窗登錄請求 */ elseif ($action == 'ajax_login') { include_once('includes/cls_json.php'); $json = new JSON; $username = !empty($_POST['username']) ? json_str_iconv(trim($_POST['username'])) : ''; $password = !empty($_POST['password']) ? trim($_POST['password']) : ''; $result = array('error' => 0, 'content' => ''); $captcha = intval($_CFG['captcha']); if ($user->login($username, $password)) { update_user_info(); //更新用戶信息 recalculate_price(); // 重新計(jì)算購物車中的商品價(jià)格 $smarty->assign('user_info', get_user_info()); $ucdata = empty($user->ucdata)? "" : $user->ucdata; $result['ucdata'] = $ucdata; $result['content'] = $smarty->fetch('library/member_info.lbi'); } else { $result['error'] = 1; $result['content'] = $_LANG['login_failure']; } die($json->encode($result)); }
將
// 不需要登錄的操作或自己驗(yàn)證是否登錄(如ajax處理)的act $not_login_arr = array('login','act_login','register','act_register','act_edit_password','get_password','send_pwd_email','password', 'signin', 'add_tag', 'collect', 'return_to_cart', 'logout', 'email_list', 'validate_email', 'send_hash_mail', 'order_query', 'is_registered', 'check_email','clear_history','qpassword_name', 'get_passwd_question', 'check_answer');
改成
// 不需要登錄的操作或自己驗(yàn)證是否登錄(如ajax處理)的act $not_login_arr = array('ajax_login','login','act_login','register','act_register','act_edit_password','get_password','send_pwd_email','password', 'signin', 'add_tag', 'collect', 'return_to_cart', 'logout', 'email_list', 'validate_email', 'send_hash_mail', 'order_query', 'is_registered', 'check_email','clear_history','qpassword_name', 'get_passwd_question', 'check_answer');
common.js文件下,
在openLginDiv()方法里,將newDiv.innerHTML的HTML代碼修改下,在登錄框標(biāo)簽里加個(gè)ajaxLoginSubmit()方法。
//生成層內(nèi)內(nèi)容 newDiv.innerHTML = '<form id="ajax_loginForm">用戶名:<br><input type="text" name="username" id="ajax_username"/>密碼:<br><input type="password" name="password" id="ajax_password"/><br><br><button type="button" onclick="ajaxLoginSubmit()">登錄</button> <button type="button" onclick="closeLoginForm()">關(guān)閉</button></form>';
再自己寫兩個(gè)方法即可
function ajaxLoginSubmit(){ var username = document.getElementById('ajax_username').value; var password = document.getElementById('ajax_password').value; Ajax.call('user.php?act=ajax_login','username='+username+'&password='+password,ajaxLoginResponse,'POST','JSON'); } function ajaxLoginResponse(result){ if(result.error == 0){ alert('登錄成功'); }else{ alert('登錄失敗'); } return false; }
以上所述是小編給大家介紹的ECSHOP中實(shí)現(xiàn)ajax彈窗登錄功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
ajax交互Struts2的action(客戶端/服務(wù)器端)
本文為大家探討下ajax交互Struts2的action并有客戶端及服務(wù)器端代碼,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08淺析巧用Ajax的beforeSend提高用戶體驗(yàn)
下面小編就為大家?guī)硪黄獪\析巧用Ajax的beforeSend提高用戶體驗(yàn)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-04-04jQuery中ajax - get() 方法實(shí)例詳解
在JQuery中可以使用get,post和ajax方法給服務(wù)器端傳遞數(shù)據(jù),接下來,通過本篇文章給大家介紹jquery中ajax-get()方法實(shí)例詳解,有需要的朋友可以參考下2015-09-09ajax實(shí)現(xiàn)服務(wù)器與瀏覽器長連接的功能
這篇文章主要介紹了ajax實(shí)現(xiàn)服務(wù)器與瀏覽器長連接的功能的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-04-04ajax請求post和get的區(qū)別以及get post的選擇
這篇文章主要介紹了ajax請求post和get的區(qū)別以及get post的選擇,需要的朋友可以參考下2014-06-06django使用ajax post數(shù)據(jù)出現(xiàn)403錯(cuò)誤如何解決
在django中,使用jquery ajax post數(shù)據(jù),會(huì)出現(xiàn)403的錯(cuò)誤,該如何解決呢?下面由腳本之家小編幫大家解決django使用ajax post數(shù)據(jù)出現(xiàn)403錯(cuò)誤,需要的朋友可以參考下2015-09-09用ajax實(shí)現(xiàn)預(yù)覽鏈接可以看到鏈接的內(nèi)容
用CSS設(shè)置預(yù)覽彈出窗口的樣式、用JavaScript進(jìn)行服務(wù)器請求并且顯示彈出窗口,需要的朋友可以參考下2014-08-08