Как перенаправить после успешного php if заявление в ajax? - PullRequest
0 голосов
/ 06 апреля 2020

PHP Как вы можете видеть в приведенном ниже коде PHP Я пытаюсь перенаправить пользователя, но я пытаюсь сделать это в jquery. то, что я хочу, если логин успешен login_success , тогда пользователь перенаправит на myprofile. php, но ничего не произошло.

    if($query)
          {
             $num=mysqli_fetch_array($query); //fetching all matching records

                if($num > 0) 
                {
                  //if record found
                    $_SESSION["loggedin"] = TRUE;
                    $_SESSION['cid']=$num['cid'];

                    echo  "login_success";

                }
                else
                {
                    echo "invalid email or password.";
                }

           }else
           {
             echo "something went wrong!";
           }

Ajax:

$.ajax({  
                       url:"sql/login_process.php",  
                       method:"POST",  
                       data:$('#login_form').serialize(),  
                       beforeSend:function(){  
                            $('#login_response').html('<span class="text-info"><i class="fas fa-spinner"></i> Loading response...</span>');  
                       },  
                       success:function(data){  
                            $('form').trigger("reset");  
                            $('#login_response').fadeIn().html(data);  
                            setTimeout(function(){  
                                 $('#login_response').fadeOut("slow");  
                            }, 7000);

                            if(data == "login_success") location.href = "http://www.example.com/myprofile.php";
                       }  
                  }); 

Мне кажется, я что-то здесь упускаю.

if(data == "login_success") location.href = "http://www.example.com/myprofile.php";

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

* Обновление Похоже, нет ничего плохого, чтобы повторить данные, как @Patrick Q, упомянутый ниже. Не могли бы вы попытаться обрезать данные, полученные в javascript / jquery, чтобы проверить наличие неожиданных пробелов

data.trim()

Если вы хотите добавить больше переменных, вы можете сделать решение ниже. (или, если хотите)

Вы не должны повторять результат ajax. Вместо этого вы должны вернуть его как json

PHP file:

$ajax_result = array():
$ajax_result['success'] = false;
$ajax_result['message'] = 'Incorrect login data';

if(something)
{
    $ajax_result['success'] = 'login_success';
    $ajax_result['message'] = 'You were logged in. You will be redirected now.';
}

header('Content-type:application/json;charset=utf-8');
echo json_encode($ajax_result);

Это вернет результат в виде массива во внешний интерфейс, и вы можете работать с ним, выбирая переменные с data.success или data.message et c.

Jquery / Javascript:

     $.ajax({  
       url:"sql/login_process.php",  
       method:"POST",  
       data:$('#login_form').serialize(),  
       beforeSend:function(){  
            $('#login_response').html('<span class="text-info"><i class="fas fa-spinner"></i> Loading response...</span>');  
       },  
       success:function(data){  
            $('form').trigger("reset");  
            $('#login_response').fadeIn().html(data.message);  
            setTimeout(function(){  
                 $('#login_response').fadeOut("slow");  
            }, 7000);

            if(data.success == "login_success") location.href = "http://www.example.com/myprofile.php";
       }  
  }); 

Это наиболее базовое c использование. Вы можете изменить его, чтобы иметь доступ к защите только из ajax запросов и т. Д. c.

0 голосов
/ 06 апреля 2020

Спасибо за все ответы и комментарии выше. Честно говоря, мне нравится идея Патрика Q, и вот то, чего я достиг на данный момент.

Ajax

  success:function(data){  
      if(data != null && data == "success"){ //redirect...
               window.location = "http://google.com";
    } else { //report failure...

                   $('form').trigger("reset"); 
                   $('#login_response').fadeIn().html(data);
                   setTimeout(function(){  
                   $('#login_response').fadeOut("slow");  
                   }, 7000);
              }
    }  

PHP

          if($num > 0) 
            {
              //if record found
                $_SESSION["loggedin"] = TRUE;
                $_SESSION['cid']=$num['cid'];

                echo "success";

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...