Ajax登录只刷新记录的div

时间:2013-11-28 19:57:18

标签: javascript login ajax

使用Zoo Visitor ajax登录或Ajax Auth,我很好地管理了EE的ajax登录。 记录用户时,如何仅刷新包含以下内容的div:欢迎用户记录。

 <div class="Welcome"><span>{username}</span>&nbsp;<a href="/logout">Logout</a></div><br />  

这是Zoo Visitor Ajax登录脚本:

   $(document).ready(function(){
                            $('#loginForm').ajaxForm({
                                    dataType: 'json',
                                    success: function(data) {
                                            if (data.success) {
                                                    alert('You are now logged in. You can add additional actions in the js script.');
                                            } else {
                                                    alert('Failed with the following errors: '+data.errors.login);
                                            }
                                    }
                            });
                    });

我想我必须在里面输入一个javascript代码:

alert('You are now logged in. You can add additional actions in the js script.');

我还在学习javascript,使用

setInterval(function(){
    document.getElementById('info').innerHTML =

这是一个很好的方法?有人有一些提示吗? 可以使用表达式引擎函数??

感谢,

斯特凡

1 个答案:

答案 0 :(得分:2)

假设您的<div class="Welcome">...</div>已经存在,您将替换

alert('You are now logged in. You can add additional actions in the js script.');

使用

$('div.Welcome').html('<span>Welcome...</span>&nbsp;<a href="/logout">Logout</a>');

但请注意,我删除了{username}。当用户在注销时访问该页面时,他们没有用户名。当他们通过AJAX登录时,页面不会刷新,因此用户名仍然保留在服务器端。 Zoo Visitor也不会返回任何成员数据。

如果您尝试使用类似app的东西,那么使用常规登录过程可能比使用AJAX更好。

如果您仍然希望坚持使用JavaScript,那么您可以做的一件事就是创建一个通过JSON返回数据的模板,例如

{exp:http_header content_type="application/json"}
{ "username": "{username}" }

(注意使用http_header插件。)

成功登录后,您将使用AJAX检查该模板,然后确认结果。如果username有一个length,那么您就知道此人已登录,您可以更新您的欢迎div。

或者......您可能想尝试通过Ben Croker通过Open API登录。显然,它的身份验证会返回您要查找的成员数据,请参阅http://docs.eeopenapi.apiary.io/#authentication