За последние 24 часа нас посетили 53836 программистов и 1714 роботов. Сейчас ищут 1015 программистов ...

php + ajax

Тема в разделе "PHP для новичков", создана пользователем ivanisoff, 23 мар 2018.

  1. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Никак не могу сделать редирект, как быть?
    Код (Text):
    1.                 $.ajax({
    2.                           type: "POST",
    3.                           url: "authorization.php?aut=0&username="+username+"&password="+password,
    4.                           dataType: 'json',
    5.                       //    async:false,
    6.                           success: function(data){
    7.                               window.location = 'index.php';
    8.                           }
    9.                       });
    Если async:true то работает window.location. Но код блин я не успеваю зайти в success, если async:false я захожу в success но не работает перенаправление. Как решить? скрипт пхп данные джесон нормальные возвращает, перепроверил там все.
     
  2. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    может вместо success используй complate
    саксес срабатывает когда сервер отдал код 200
    а комплете когда сервер отдал данные
     
  3. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Такое же поведение, то сработает если с алерт сделать вот так, но мне так не надо


    Код (Text):
    1.            var ss =   $.ajax({
    2.                           type: "GET",
    3.                           url: "authorization.php?aut=0&username="+username+"&password="+password,
    4.                           dataType: 'json',
    5.                       //    async:false,
    6.                   complete: function(data){
    7.                               window.location = 'index.php';
    8.                           }
    9.                       });
    10.  
    11.  
    12.                    alert(ss);
    А произойдет это так, потому что цитата "код, который должен выводить строки выполняется ДО того, как с сервера придёт ответ. А использование алерта останавливает код до нажатия "ОК", и за это время всё уже приходит."

    И как быть то???как заставить его сделать редирект этот
     
  4. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Код (Javascript):
    1. if(data){
    2.  
    3. }
     
  5. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Я так понимаю в аяксе с async:false редирект сделать вообще нельзя. Только с async:true. А как тогда в условие то зайти complete или success. Ваше условие должно быть либо в omplete либо success, но я с async:true зайти не могу. Вот вся беда то в чем. Уже весь поисковик переррыл, не одного решения не нашел рабочего. Как будто нерешаемая проблема какая то
     
  6. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Что значит не успеваешь зайти в success? Как происходит редирект, если он в success?
    Что вообще нужно?
    async вообще не трогай.
     
  7. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    я хочу заполнить два поля Логин, пароль. Нажать войти. Далее выполнить код ниже
    Код (Text):
    1.                       $.ajax({
    2.                           type: "POST",
    3.                           url: "authorization.php?aut=0&username="+username+"&password="+password,
    4.                           dataType: 'json',
    5.                         //  async:false,
    6.                           success: function(data){
    7.                               window.location = 'index.php';
    8.  
    9.                           }
    10.                       });
    в случае успеха должен произойти редирект. Мне нужно сделать редирект на страницу index.php .Все. Как сделать?
    --- Добавлено ---
    Хотя бы пофиг успех не успех, просто сделать редирект, блин не один вариант не работает из сети.

    authorization.php этот скрипт лежит в той же папке где скрипт с кодом выше
     
  8. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Есть подозрение, что этот код ты вызываешь на submit, но не возвращаешь false, чтобы форма сама не засабмитилась
     
    Dron-Boy нравится это.
  9. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Чтобы не гадать, вот весь код

    Код (Text):
    1. $(document).ready(function(){
    2.  
    3.           $("#submit").click(function(){
    4.               var text = document.getElementById('submit').value;
    5.               var username = $("#username").val();
    6.               var password = $("#password").val();
    7.               var email = $("#email").val();
    8.  
    9.               switch (text){
    10.                   case 'Войти':
    11.  
    12.                       $.ajax({
    13.                           type: "POST",
    14.                           url: "authorization.php?aut=0&username="+username+"&password="+password,
    15.                           dataType: 'json',
    16.  
    17.                           success: function(data){
    18.                               window.location = 'index.php';
    19.  
    20.                           }
    21.                       });
    22.  
    23.                       break;
    24.                   case 'Регистрация':
    25.  
    26.                       $.ajax({
    27.                           type: "POST",
    28.                           url: "authorization.php?aut=1&username="+username+"&password="+password+"&email="+email,
    29.                           dataType: 'json',
    30.                           success: function(data){
    31.                               window.location = 'index.php';
    32.                           }
    33.                       });
    34.                       break;
    35.                   default:
    36.                       break;
    37.               }
    38.           });
    39.  
    40.  
    41.     });
    --- Добавлено ---
    Срабатывает на эту вещь

    Код (Text):
    1. <form class="login" >
    2.     <h1>Авторизация</h1>
    3.     <fieldset id="inputs">
    4.         <input id="username"  type="text" placeholder="Логин">
    5.         <input id="password"  type="password" placeholder="Пароль">
    6.         <input id="email"  type="hidden" placeholder="Email">
    7.     </fieldset>
    8.     <fieldset id="actions">
    9.         <input type="submit" id="submit" value="Войти">
    10.         <a href="#" id="recovery">Забыли пароль?</a>
    11.         <a href="#" id="reg">Регистрация</a>
    12.     </fieldset>
    13. </form>
     
  10. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Как сделать то по уму тогда?
    --- Добавлено ---
    Ну да
     
  11. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Да, в этом причина.
    Нужно поменять:
    Код (Javascript):
    1. $("#submit").click(function(){
    2. // на
    3. $("#submit").submit(function(){
    4.    // твой код
    5.    return false; // !!!важно
    6. });
     
    ivanisoff нравится это.
  12. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    не идет редирект и все.
    --- Добавлено ---
    Так, все пошел зараза такая. Только добавил
    return false; в конец $("#submit").click(function(){ и оставил click, событие же click
    --- Добавлено ---
    А может вы мне расскажите еще как разобрать объект?
    У меня в алерте если показауть дата, показывает [object Object]
    Хотя пхп скрипт возвращает
    echo json_encode(array(array('login' => $login)));
    В таком виде
    [{"login":"qwerty"}] короче приходит

    Может можно как то разобрать что пришло?
     
  13. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    Так в алерте он и будет показывать объект.
    Отключи редирект, а объект выводи в console.log()
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    надо каждый раз пи3дить любого, кто не соблюдает абсолютные пути
    --- Добавлено ---
    а потом спрашивают а почему у меня урл такой?
    form.php?id=666index.php
     
  15. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    на click оставлять опастно, т.к. при нажатии enter в любом input у тебя будет отправляться форма по дефолту, а не твой редирект
     
  16. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Дак а при сабмит почему то ничего не происходит, кнопочку нажал и ничего

    Спасибо за ваш очень значимый пост! прям ждал его как маны небесной. А если по делу, то я ливану на хост и все пути будут нормально работать, а вы предлагаете потом править чтоли все? как то неразумно.
     
  17. valentinnew

    valentinnew Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    161
    Симпатии:
    36
    убери тогда теги формы и type=submit у кнопки отправить
     
  18. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
  19. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Уйди просто с темы, я не для флуда создавал ее
    --- Добавлено ---
    все норм, надо просто на форму саму было делать, теперь как ты писал в начале все стоит и работает. Спасибо вам.