2015-08-11 2 views
0

Я создал окно входа в модальное, но по какой-то причине я не могу получить результаты. Я очень новичок в javascript, поэтому я предполагаю, что это нечто очевидное!Ajax Login не возвращает результаты

$('#login').click(function() 
     { 

      $("#buttons").hide(); 
      $("#progress").show(); 
      var email=$("#email").val(); 
      var password=$("#password").val(); 
      var dataString = 'email='+email+'&UserPW='+password; 
      if($.trim(email).length>0 && $.trim(password).length>0) 
      { 
      $.ajax({ 
      type: "POST", 
      url: "includes/php/ajaxLogin.php", 
      data: dataString, 
      cache: false, 
      beforeSend: function(){ 
       $("#buttons").hide(); 
       $("#progress").show(); 
      ;}, 
      success: function(data){ 
       if(data) 
       { 
       console.log(data); 
       if (data = "client/staff") 
       { 
        $("#clientStaffToggleButtons").show(); 
       } 
       if (data = "staff") 
       { 
        $("body").load("staff/dashboard.php").hide().fadeIn(1500).delay(6000); 
       } 
       if (data = "client") 
       { 
        $("body").load("myevent/dashboard.php").hide().fadeIn(1500).delay(6000); 
       } 
       if (data = "noEmail") 
       { 
        $("#buttons").show(); 
        $("#progress").hide(); 
        //Shake animation effect. 
        $('#formLogin').shake(); 
        $("#signInSubmit").val('Sign In') 
        $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. "); 
       } 
       if (data == "noPW") 
       { 
        $("#buttons").show(); 
        $("#progress").hide(); 
        //Shake animation effect. 
        $('#formLogin').shake(); 
        $("#signInSubmit").val('Sign In') 
        $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. "); 
       } 
       } 
      } 
      }); 

      } 
      return false; 

Любые идеи о том, что может быть неправильным?

Большое спасибо !! : D

EDIT Просто чтобы прояснить, я получаю функции обратно (через лог консоли), но, кажется, они не должны быть на самом деле делать что-нибудь в если-то заявления, например:

если (данные = «клиент/персонал»), кажется, не делать ничего, даже если данные, возвращаемые был «клиент/персонал»

, чтобы проверить его пойти на fiestausa.com и

нажмите логин в правом верхнем углу

+1

Добавить обработчик ошибок в вызов Ajax – epascarello

+1

Проверьте консоль на наличие ошибок и посмотрите вкладку сетевого отладчика (Chrome), чтобы узнать, когда-либо сделан запрос на включение/php/ajaxLogin.php. – Samuel

+1

Во-первых, как сказал @epascarello, добавьте обработчик ошибок 'error: function (xhr, ajaxOptions, thrownError)' и, во-вторых, конец 'beforeSend', похоже, имеет дополнительную нежелательную точку с запятой – jagmitg

ответ

1

Неправильное использование сравнений:

$('#login').click(function(e) 
     { 
      e.preventDefault(); 

      $("#buttons").hide(); 
      $("#progress").show(); 
      var email=$("#email").val(); 
      var password=$("#password").val(); 
      var dataString = 'email='+email+'&UserPW='+password; 
      if($.trim(email).length>0 && $.trim(password).length>0) 
      { 
      $.ajax({ 
      type: "POST", 
      url: "includes/php/ajaxLogin.php", 
      data: dataString, 
      cache: false, 
      beforeSend: function(){ 
       $("#buttons").hide(); 
       $("#progress").show(); 
      ;}, 
      success: function(data){ 
       if(data.d) 
       { 
       console.log(data.d); 
       if (data.d == "client/staff") 
       { 
        $("#clientStaffToggleButtons").show(); 
       } 
       if (data.d == "staff") 
       { 
        $("body").load("staff/dashboard.php").hide().fadeIn(1500).delay(6000); 
       } 
       if (data.d == "client") 
       { 
        $("body").load("myevent/dashboard.php").hide().fadeIn(1500).delay(6000); 
       } 
       if (data.d == "noEmail") 
       { 
        $("#buttons").show(); 
        $("#progress").hide(); 
        //Shake animation effect. 
        $('#formLogin').shake(); 
        $("#signInSubmit").val('Sign In') 
        $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. "); 
       } 
       if (data.d == "noPW") 
       { 
        $("#buttons").show(); 
        $("#progress").hide(); 
        //Shake animation effect. 
        $('#formLogin').shake(); 
        $("#signInSubmit").val('Sign In') 
        $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. "); 
       } 
       } 
      } 
      }); 
     } 

"вернуться ложным" теперь осуждается.

+0

Что делает добавление «.d» к данным? –

+1

Вместо того, чтобы пытаться объяснить и сделать беспорядок его ха-ха. Статья, которая объясняет намного лучше: http://haacked.com/archive/2009/06/25/json-hijacking.aspx/ –

+0

Полезно знать, спасибо! –

2

Вы используете оператор присваивания (=), вместо оператора сравнения (=== или ==, если вы не заботитесь о типе), поэтому такие вещи, как это:

if (data = "client/staff") 

должен стать этим :

if (data === "client/staff") 

оператор присваивания возвращает значение присваивания, так что в вашем случае, если линия сверху равна:

data = "client/staff"; 
if ("client/staff") 

, который оценивается как истинный, поскольку непустые строки являются правдивыми.

+0

Я попытался изменить его на == и ===, и он все еще не работает :(Он возвращает переменную в консоль, но не выполняет действие –

+0

Можете ли вы вставить именно то, что «данные» находятся в одном Пример: – Shomz

+0

Консоль показывает клиента/персонал, когда я пытаюсь войти в систему, и неверно, если я нахожу неправильный пароль –