ecshop顶部实现AJAX登陆退出
ajax无刷新技术对于站点的体验度非常好,现在的站点基本上都使用了 ajax 的无刷新,这一节我们来看一下如何使用 ajax 来对 ecshop 网站顶部登录与登出实现无刷新,ecshop 本身提供的模板是不支持无刷新的,每一次的登陆跳出都要刷新页面才行,给人的体验很不好,下面小虎博客就把 ecshop 顶部实现无刷新的效果代码分享一下。
找到 themes/xiariboke/library/member_info.lbi,将登陆登出的代码替换成如下的代码即可:
[code lang="php"]
<!--{if $user_info}-->
<div class="lef_tit_bj">会员登陆</div>
<div class="left_conn_bj">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="50" align="center" valign="middle"><label><strong>Hello {$user_info.username}</strong></label></td>
</tr>
<tr>
<td height="30" align="center" valign="middle"><strong>欢迎光临本店</strong></td>
</tr>
<tr>
<td height="40" align="center" valign="bottom"><label> <a href="user.php?act=logout"> <img src="../images/tuichu.gif"></a> <a href="user.php"> <img src="../images/jinrultan.gif"></a> </label></td>
</tr>
</table>
</div>
</div>
<!--{else}-->
<div class="lef_tit_bj">会员登录</div>
<div class="left_conn_bj">
<form id="ECS_LOGINFORM" name="ECS_LOGINFORM" method="post" action="javascript:signIn()">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="50" align="right" valign="middle">用户名:</td>
<td height="50" align="left" valign="middle"><label>
<input type="text" name="username" class="yonhu_input" style="height:15px;"/>
</label></td>
</tr>
<tr>
<td height="30" align="right" valign="middle"> 密 码:</td>
<td height="30" align="left" valign="middle"><input type="password" name="password" class="yonhu_input" style="height:15px;" /></td>
</tr>
<tr>
<td height="40" colspan="2" align="center" valign="bottom"><label>
<input type="image" name="imageField" src="images/denglu_bann.jpg" />
<a href="user.php?act=register"><img src="images/zhuce_bann.jpg" border="0" /></a> </label></td>
</tr>
</table>
</form>
</div>
</div>
<!--{/if}-->
{literal}
<script type="text/javascript">
function signIn()
{
var frm = document.forms['ECS_LOGINFORM'];
if (frm)
{
var username = frm.elements['username'].value;
var password = frm.elements['password'].value;
var captcha = '';
if (frm.elements['captcha'])
{
captcha = frm.elements['captcha'].value;
}
if (username.length == 0 || password.length == 0)
{
{/literal}
alert("{$lang.empty_username_password}");
{literal}
return;
}
else
{
Ajax.call('user.php?act=signin', 'username=' + username + '&password=' + encodeURIComponent(password) + '&captcha=' + captcha, signinResponse, "POST", "TEXT");
}
}
else
{
alert('Template error!');
}
}
function signinResponse(result)
{
var userName = document.forms['ECS_LOGINFORM'].elements['username'].value;
var mzone = document.getElementById("ECS_MEMBERZONE");
var res = result.parseJSON();
if (res.error > 0)
{
alert(res.content);
if(res.html)
{
mzone.innerHTML = res.html;
document.forms['ECS_LOGINFORM'].elements['username'].value = userName;
}
}
else
{
if (mzone)
{
mzone.innerHTML = res.content;
evalscript(res.ucdata);
//alert(res.ucdata);
}
else
{
window.location.reload()
}
}
}
</script>
{/literal}
[/code]
另外还需要注意一点:ecshop 中经常会出现 js 冲突的问题,如果 js 冲突的问题已经解决并引用了jquery.json.js 的话,需要将其中的 var res = result.parseJSON(); 要改成:var res = $.evalJSON(result);