Форма входа с использованием ajax, чтобы отправить без обновления - PullRequest
2 голосов
/ 23 марта 2010

Я использую этот учебник для создания формы входа http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit-form/

Идентифицируется на нашем сервере ldap.

У меня проблема с линией

success: function(){
 $('form#submit').hide(function(){$('div.success').fadeIn();});

Он работает успешно, хотя мы даже не знаем, были ли успешно привязаны имя пользователя и пароль.

Есть ли способ запустить успех, только если введенные имя пользователя и пароль были успешно связаны?

EDIT:

Добавлен php-код ldap-login.php

<?php

ini_set('display_errors',1);
error_reporting(E_ALL);
require_once('/web/ee_web/include/adLDAP.php');
$adldap = new adLDAP();
if (isset($_POST['username']) && isset($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];  // associated password

    // connect to ldap server
    $authUser = $adldap->authenticate($username, $password);
    if ($authUser === true) {
        $_SESSION['user_session'] = $username;
        if(isset($_SESSION['user_session'])) {
            print "ok";
        }   
    }
    else {
      print "User authentication unsuccessful";
    }
}
?>

Ответы [ 4 ]

3 голосов
/ 23 марта 2010

Если ваш ответ возвращается с простой строкой "ok" или сообщением об ошибке, вы можете проверить это следующим образом:

success: function(data){
  if(data === "ok") {
    $('form#submit').hide(function(){$('div.success').fadeIn();
  } else {
    alert(data); // If not "ok", show error message
  }
});

Либо отправьте / проверьте более сложный ответ JSON.

1 голос
/ 23 марта 2010

Причина, по которой он работает успешно, заключается в том, что успех означает, что вызов ajax был успешным. Это не означает, что он проверен на соответствие вашей логике, которую вы еще не реализовали, но, как описано в других ответах, должно работать. Но теперь вы знаете, когда он перезвонил.

0 голосов
/ 23 марта 2010

Что вам нужно сделать, это вернуть флаг через функцию успеха.

Функция success: в вашем случае представляет форму, отправляемую успешно, а не обязательно, что аутентификация прошла успешно. функция успеха может принять строку, указывающую на все, что вы хотите, как возвращено сервером.

См. success (data, textStatus, XMLHttpRequest) раздел в документации jQuery.

Вы можете сделать:

   success: function(status){
      if(status === "loggedIn") {
         $('form#submit').hide(function(){$('div.success').fadeIn();});
      }
   }
0 голосов
/ 23 марта 2010

Ваша функция ajax возвращает, успешно ли связаны имя пользователя и пароль. Ваш код будет выглядеть так:

success: function(data){
  if(data.success){
    $('form#submit').hide(function(){$('div.success').fadeIn();});
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...