За последние 24 часа нас посетили 20624 программиста и 1008 роботов. Сейчас ищут 363 программиста ...

Как вернуть значение ajax

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

Метки:
  1. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    есть js код
    Код (Javascript):
    1. $('#btn').on('click',function(){
    2.   var login = $('#login').val();
    3.   var password = $('#password').val();
    4.   $.ajax({
    5.     url:"http://axxl.loc/files/handler_auth.php",
    6.     type:"POST",
    7.     cache:false,
    8.     data:{
    9.       'login':login,
    10.       'password':password
    11.     },
    12.     success:function(data){
    13.       if(data == '1'){
    14.         location.reload();
    15.       }else{
    16.       $('#out').html(data);
    17.       }
    18.     }
    19.   });
    20. })
    и есть соответственно php код(обработчик ajax запроса)
    PHP:
    1. <?
    2. include '../config/db.php';
    3. include '../config/functions.php';
    4. $login = htmlspecialchars(str_replace(' ','',$_POST['login']));
    5. $password = htmlspecialchars(str_replace(' ','',$_POST['password']));
    6. get_all_data('login',$login,'count_l','row_l');
    7. get_all_data('password',$password,'count_p','row_p');
    8. if($login == ''){
    9.   echo "Вы не ввели логин";
    10. }elseif($password == ''){
    11.   echo "Вы не ввели пароль";
    12. }elseif($count_l == true AND $count_p == true){
    13.   $_SESSION['user'] = $login;
    14.   echo "1";
    15. }else{
    16.   echo "Аккаунт не найден";
    17. }
    Я хочу чтобы допустим если сервер вернул текст "1"
    то выполнился код js
    но при проверке код не выполняется
    Код (Javascript):
    1. success:function(data){
    2.       if(data == '1'){
    3.         location.reload();
    4.       }else{
    5.       $('#out').html(data);
    6.       }
    Спасибо заранее.
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    У тебя в дате объект, а ты его сравниваешь с 1
     
  3. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    Как это делать я не шарю просто в ООП
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    тут ооп вообще не причём
    --- Добавлено ---
    а в консоли что пишет?
     
  5. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    Спасибо все работает просто добавил return data;
    Код (Javascript):
    1. $('#btn').on('click',function(){
    2.   var login = $('#login').val();
    3.   var password = $('#password').val();
    4.   $.ajax({
    5.     url:"http://axxl.loc/files/handler_auth.php",
    6.     type:"POST",
    7.     cache:false,
    8.     data:{
    9.       'login':login,
    10.       'password':password
    11.     },
    12.     success:function(data){
    13.       if(data == '1'){
    14.         location.reload();
    15.       }else{
    16.       $('#out').html(data);
    17.       }
    18.     }
    19.     return data;
    20.   });
    21. })
     
  6. twim32

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

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Не правильно. Js не дожидается ответа от аякса и продолжает работу.
    Чтобы избежать данной ситуации, используйте Promise
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Две строки, по которым видно, что пациент безнадёжен...
     
  8. master-web

    master-web Новичок

    С нами с:
    29 май 2019
    Сообщения:
    44
    Симпатии:
    16
    @PHP-Chainik12, @Dimon2x Не путайте объект data, который вы передаете
    Код (Text):
    1.     data:{
    2.       'login':login,
    3.       'password':password
    4.     },
    и ответ от сервера
    Код (Text):
    1. success:function(data){
    2.       if(data == '1'){
    3.         location.reload();
    4.       }else{
    5.       $('#out').html(data);
    6. }
    Для начала, нужно проверить что вообще возвращает сервер
    Код (Text):
    1. success:function(data){
    2.   console.log(data);
    3. }
    Или даже так
    Код (Text):
    1. success:function(data){
    2.   console.log(data);
    3. },
    4. error:function(data){
    5.   console.log('error');
    6.   console.log(data);
    7. }
    И вместо data здесь можно использовать любую переменную.
     
    _ne_scaju_ нравится это.