Php 登录状态指示器功能不工作
我在ajax php数据库的主页上有一个登录状态指示器div。单击“登录”按钮可执行两项操作Php 登录状态指示器功能不工作,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我在ajax php数据库的主页上有一个登录状态指示器div。单击“登录”按钮可执行两项操作 <input value="Login" type="button" onclick='logIntheUser(/*function to process login request*/);updateLoginStatusIndicator(/*function to update login status in login staus indicator div*/);' /> 现在
<input value="Login" type="button" onclick='logIntheUser(/*function to process login request*/);updateLoginStatusIndicator(/*function to update login status in login staus indicator div*/);' />
现在的问题是,用户在一段时间内成功登录(即设置了会话['username']),但第二个函数仍然显示“未登录”。登录状态指示器不总是工作。如果更新登录状态指示器在logIntheUser
之后运行,则它将正确更新登录状态。但我不知道怎么做。请帮忙
编辑
当我以回调的形式调用函数时,例如:logIntheUser(updateLoginStatusIndicator()),它仍然不起作用(可能是我的回调方法不正确)。然后当我添加时设置时间限制(1)
到updateLoginStatusIndicator()
函数脚本延迟1秒,它开始工作,但延迟脚本不是最佳做法。请帮助我如何毫不延迟地使用它,以便只有在logIntheUser()
函数完成执行后,才能执行updateLongStatusIndicator()
函数。请提供帮助。在大多数情况下,当第一个函数出现错误时,会发生这种情况。确保任何东西都可以停止脚本的执行
编辑:
我建议您在onclick
事件上使用单函数回调修改HTML:
onclick="logInProcedure();"
在JS中:
function logIntheUser() {
/* Your code to process login */
/* set a boolean variable to true or false */
if(sucessfulyLoggedin) {
return true;
}
return false;
}
function updateLoginStatusIndicator() {
/* Your code here */
}
function loginProcedure() {
if(logIntheUser()) {
updateLoginStatusIndicator();
}
}
logIntheUser()执行AJAX请求,对吗?updateLoginStatusIndicator()的问题很可能在于,在logInTheUser()之后调用if,而不是在AJAX请求成功完成之后。也就是说,它可以在更新之前获取用户的状态。您应该在AJAX请求的回调中调用updateLoginStatusIndicator()。只需从logInTheUser函数返回一些值,并在该函数返回值时调用updateLoginStatusIndicator函数尝试在不使用isset函数的情况下执行此操作,有时isset不能根据服务器设置的变量工作。@RavinderSingh,嗯,不是这样的。我想这是因为函数执行的时间。如果在第一个函数logIntheUser
完全执行后运行第二个函数updateLogenstatusIndicator
,则此错误将被修复。但是我不知道如何运行第一个函数logIntheUser
,使第二个函数updateLoginStatusIndicator
等待第一个函数完成,然后运行它。只需从logInTheUser函数返回一些值,并在该函数返回值时调用updateLoginStatusIndicator函数。第一个函数logInTheUser
工作正常,因为当我刷新页面用户已成功登录。请检查对我的问题的编辑,我已添加更多详细信息。感谢您的帮助,您的意思是我必须使用logIntheUser(,,updateLoginStatusIndicator())对吗?@Exander我以回调的方式调用了该函数,例如:logIntheUser(,,updateLoginStatusIndicator()),但它仍然不起作用(可能是我的回调方法不正确)。然后我添加了set_time_limit(1);发送到第一个函数脚本以将其延迟1秒。延迟其工作,但这不是延迟脚本的最佳实践。请帮助我如何才能毫不拖延地工作?请检查我的问题的编辑,我已经添加了更多的细节。Thanks必须将所有javascript代码置于这样的条件下,即当您从第一个函数中获取值时,只有下面的代码才会执行。。。。
logInTheUser
updateLoginStatusIndicator
updateLoginStatusIndicator