我有以下HTML
:AJAX + 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'] = '';
向我發送一些錯誤,但我試圖查看該錯誤的那一行,但在我看來沒有任何問題......請幫我解決這個問題。
謝謝!
你確定這是問題的根源嗎? – user3661795 2014-11-14 22:43:08
如果您使用chrome工作,請使用其他瀏覽器啓動元素檢查器或任何其他調試程序,然後切換到選項卡網絡並檢查php的返回值。 – Dorvalla 2014-11-14 22:45:31
當我點擊「登錄」,我收到此錯誤: 'if(!$ myrow ['password']){ $ json ['error'] ='抱歉,但您的登錄名或密碼不正確! 「; //пишемошибкувмассив echo json_encode($ json); //выводиммассивответа die(); }其他{//做其他事情...}' 我不知道爲什麼我得到這個錯誤,如果我確定我的登錄名和密碼是正確的。 – user3661795 2014-11-15 07:16:42