1

我正在尝试通过 jquery 和 ajax 在灯箱中登录。我的目标是在用户成功登录后,他会被重定向到一个特殊的站点。

通过 jQuery.ajax 登录可以正常工作,但我希望如果用户登录,他会被重定向,如果他没有登录,他会留在登录站点上。到目前为止,这是我的代码:

$(".logmein").click(function() {  
  var username = $("input#username").val();  
  var password = $("input#password").val();         
  var dataString = 'username='+ username + '&password=' + password + '&login=Login' ; 

    $.ajax({  
        type: "POST",  
        url: "<?php echo $_SERVER['PHP_SELF']; ?>",  
        data: dataString,  
        success: function() { 
            window.location = "http://test.home/kundenbereich.html"; 
            $('#login_form').html("<div id='message'>Superb</div>");  
        }  
    });  
    return false;  

});

ajax请求执行成功但是,我可以从php生成一个回调来通知js用户没有登录,然后不通过“window.location”重定向他吗?在这种情况下,无论登录 php 是否成功,他都会被重定向!

登录功能在同一页面(php)上,并且正在使用用户名和密码。

在这个问题上获得一些帮助会很棒。

真挚地。

4

3 回答 3

0

让您的 php 登录函数返回一个 json 对象,例如:

// login.php page :
[...] 
if (some_auth_system_log_user_in($username, $password)) {
   exit(json_encode(array('result'=>'success', 'message'=>'Logged in successfully!')));
} else {
   exit(json_encode(array('result'=>'error', 'message'=>'Some error'))); 
}

那么jquery代码将是:

var username = $("input#username").val();
var password = $("input#password").val(); 
$.post('login.php', {username:username, password:password}, function(response){
  if (response.result == 'success') {
   // redirect
  } else {
   // do something with response.message here
  }
}, 'json');

使用 json 使您能够回发多个参数或翻译的消息等,因此通常比true/false在您的 php 文件中回显要好

于 2013-05-10T13:54:32.193 回答
0

PHP:

if (Fe_User::Login($this->getPost('username'), $this->getPost('password'))){  
   echo "true";
}
else{ 
   echo "false";
}

脚本 :

$.ajax({  
      type: "POST",  
      url: "<?php echo $_SERVER['PHP_SELF']; ?>",  
      data: dataString,  
      success: function(response) {
          if(response == "true"){ 
           $('#login_form').html("<div id='message'>Superb</div>"); 
           window.location = "http://test.home/kundenbereich.html"; 
          } 
       }  
});  
于 2013-05-10T13:51:20.483 回答
0

当我将输出放在 php 文件的开头并让它 die(); 输出ajax值后。它没有解决,因为我对 ajax 输出使用相同的文档,因此响应是页面的整个标记。

谢谢你的帮助

于 2013-05-11T13:28:35.353 回答