За последние 24 часа нас посетили 22837 программистов и 1240 роботов. Сейчас ищут 780 программистов ...

Не видит переменную в запросе ajax

Тема в разделе "JavaScript и AJAX", создана пользователем Khaybulla, 26 июл 2016.

Метки:
  1. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Jquery не видит переменную jValid.errors = true; в запросе ajax , если запрос делать асинхронный async: false; то переменную видно но все происходит долго и подлагивает , есть ли другие способы это реализовать без async: false; ?


    Код (Javascript):
    1. 'login' : function() {
    2.             var patt = /^[A-Za-z0-9]{6,32}$/i;
    3.             var login = $("#login").val();
    4.             if(!patt.test(login)) {
    5.                 jValid.errors = true;
    6.                     $('#message').text("Введите от 6 до 32 символов");
    7.             } else {      
    8.                 $.ajax({
    9.                     url: "request.php",
    10.                     type: "GET",
    11.                     data: "login=" + login,
    12.                     cache: false,
    13.                     success: function(response) {
    14.                         if(response == "no") {
    15.                             jValid.errors = true;
    16.                                 $('#message').text("Логин уже используется");
    17.                         }
    18.                     }
    19.                 });
    20.             }
    21.         }
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    jValid глобальная переменная (window.jValid) или она объявлена в другой области видимости?
     
  3. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Переменная объявлена в том же файле....
    Вот весь файл


    Код (Javascript):
    1. $(document).ready(function() {
    2.  
    3.     var jValid = {
    4.  
    5.         'login' : function() {
    6.             var patt = /^[A-Za-z0-9]{6,32}$/i;
    7.             var login = $("#login").val();
    8.             if(!patt.test(login)) {
    9.                 jValid.errors = true;
    10.                     alert("Введите от 6 до 32 символов");
    11.             } else {
    12.                 $.ajax({
    13.                     url: "request.php",
    14.                     type: "GET",
    15.                     data: "login=" + login,
    16.                     cache: false,
    17.                     success: function(response) {
    18.                         if(response == "no") {
    19.                             jValid.errors = true; //не видит без async: false,
    20.                                 alert("Логин уже используется");
    21.                         }  
    22.                     }
    23.                 });
    24.             }
    25.         },
    26.  
    27.         'sendIt' : function () {
    28.             if(!jValid.errors) {
    29.                 $.ajax({
    30.                     url: "request.php",
    31.                     type: 'post',
    32.                     data: $("#form").serialize(),
    33.                     cache: false,
    34.                     success: function(otvet) {
    35.                         $("#login").val('');
    36.                         if(otvet == "no") {
    37.                             alert("Ошибка! Попробуйте снова");
    38.                         } else {
    39.                             alert("Успешно!");
    40.                         }
    41.                     }
    42.                 });
    43.             }
    44.         }
    45.     };
    46.  
    47.     $('#submit').click(function () {
    48.         jValid.errors = false;
    49.         jValid.login();
    50.         jValid.sendIt();
    51.         return false;
    52.     });
    53.     $('#login').keyup(jValid.login);
    54. });
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв