2014-11-14 159 views
0

我有以下HTMLAJAX + PHP + HTML表單

<form action="" method="post" class="form-log-in" autocomplete="off" id="ajaxform"> 
          <div class="main-inputs w1-ha db oh left m-b10"> 
           <input name="login" type="text" size="15" maxlength="15" placeholder="Логин" val="" class="input-style b2 w1-ha db left m-b5"> 
           <input name="password" type="password" size="15" maxlength="15" placeholder="Пароль" val="" class="input-style b2 w1-ha db left m-b5"> 

           <button type="submit" name="submit" value="Войти" class="left m-t10 btn green-btn">Войти</button> 
          </div> 
         </form> 

,我有以下阿賈克斯要求:

<script> 
$(document).ready(function() { // вся магия после загрузки страницы 
    $("#ajaxform").submit(function(){ // перехватываем все при событии отправки 
     var form = $(this); // запишем форму, чтобы потом не было проблем с this 
     var error = false; // предварительно ошибок нет 
     form.find('input, textarea').each(function(){ // пробежим по каждому полю в форме 
      if ($(this).val() == '') { // если находим пустое 
       alert('Заполните поле "'+$(this).attr('placeholder')+'"!'); // говорим заполняй! 
       error = true; // ошибка 
      } 
     }); 
     if (!error) { // если ошибки нет 
      var data = form.serialize(); // подготавливаем данные 
      $.ajax({ // инициализируем ajax запрос 
       type: 'POST', // отправляем в POST формате, можно GET 
       url: 'login.php', // путь до обработчика, у нас он лежит в той же папке 
       dataType: 'json', // ответ ждем в json формате 
       data: data, // данные для отправки 

       success: function(data){ // событие после удачного обращения к серверу и получения ответа 
         if (data['error']) { // если обработчик вернул ошибку 
          alert(data['error']); // покажем её текст 
         } else { // если все прошло ок 
          alert('Вы авторизованы!'); // пишем что все ок 
         } 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { // в случае неудачного завершения запроса к серверу 
        alert(xhr.status); // покажем ответ сервера 
        alert(thrownError); // и текст ошибки 
       } 

       }); 
     } 
     return false; // вырубаем стандартную отправку формы 
    }); 
}); 

我只是strating對PHP代碼,所以不要在我的代碼上苦苦鑽研::D

<?php 
    if($_POST){ 
     session_start(); 

     include_once('other/inc/config.php'); 
     include_once("other/inc/bd.php") or die(mysql_error()); 
     $login = $_POST['login']; 
     $password = $_POST['password']; 

     $login = htmlspecialchars(stripslashes(trim($login))); 

     $password = md5(htmlspecialchars(trim(stripslashes($password)))); 

     $json = array(); 

     if(!$login or !$password) { 
      $json['error'] = 'Вы ввели не всю информацию, вернитесь назад и заполните все поля!'; // пишем ошибку в массив 
      echo json_encode($json); // выводим массив ответа 
      die(); // умираем 
     } 



    // подключаемся к базе 
     // файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 

     $result = mysql_query("SELECT * FROM users WHERE login = '$login'", $db); 
     $myrow = mysql_fetch_array($result); 

     if (!$myrow['password']) { 
      $json['error'] = 'Извините, введённый вами login или пароль неверный.2121'; // пишем ошибку в массив 
      echo json_encode($json); // выводим массив ответа 
      die(); 
     } else { 
      //если существует, то сверяем пароли 
      if ($myrow['password'] == $password) { 
       //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел! 
       $_SESSION['login'] = $myrow['login']; 
       $_SESSION['id'] = $myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь 

       # json use 
       $json['error'] = 'Вы успешно зашли!'; 
       echo json_encode($json); // выводим массив ответа 
       die(); 

      } else { 
       $json['error'] = 'Извините, введённый вами login или пароль неверный.'; // пишем ошибку в массив 
       echo json_encode($json); // выводим массив ответа 
       die(); 

      } 
     } 

     $json['error'] = 0; // ошибок не было 
     echo json_encode($json); // выводим массив ответа 
    } else { 
     echo 'Не шали!'; // высылаем 
     header('Refresh: 0; URL=/'); 
    } 

?> 

什麼不起作用? 我認爲有幾個問題需要解決;

例如:

所以點擊數我的表單按鈕,我讓AJAX鉤POST事件而導致的login.php,我檢查的形式,然後做什麼它說裏面。但是對於我來說,一切看起來都不錯,應該是有效的,一部分是有效的,例如,如果我將表格留空,我會收到一條警告信息,內容是「請填寫$var」字段。它甚至會通過json['error'] = '';向我發送一些錯誤,但我試圖查看該錯誤的那一行,但在我看來沒有任何問題......請幫我解決這個問題。

謝謝!

+0

你確定這是問題的根源嗎? – user3661795 2014-11-14 22:43:08

+0

如果您使用chrome工作,請使用其他瀏覽器啓動元素檢查器或任何其他調試程序,然後切換到選項卡網絡並檢查php的返回值。 – Dorvalla 2014-11-14 22:45:31

+0

當我點擊「登錄」,我收到此錯誤: 'if(!$ myrow ['password']){ $ json ['error'] ='抱歉,但您的登錄名或密碼不正確! 「; //пишемошибкувмассив echo json_encode($ json); //выводиммассивответа die(); }其他{//做其他事情...}' 我不知道爲什麼我得到這個錯誤,如果我確定我的登錄名和密碼是正確的。 – user3661795 2014-11-15 07:16:42

回答

0

你說你應該在你的ajax調用中收到一個json返回類型。你的php不是隻發送json嗎?

echo 'Не шали!'; // высылаем 
header('Refresh: 0; URL=/'); 

成爲

echo json_encode(array('error' => 'nope')); 

+0

我修正了這個問題,但沒有任何真正的問題 – user3661795 2014-11-15 07:10:09