Когда я убираю dataType: 'json', то success: работает, а иначе нет. Так как
$("#log-form").serialize() тоже работает, но в самом файле login.php ничего не происходит.
Как мне возвратить json-строку. Я планировал сделать так: если значение этой json-строки равно "false-pass", то сделать определенный кусок js-кода
В общем, две проблемы:
как сделать json-запрос? (я слышал что-то о $.getJson);
и почему не отправляются данные в файл login.php?
$('#log-form').submit(function(e) {
e.preventDefault();
$.ajax({
url: 'login.php',
type: 'POST',
dataType: 'json',
data: $("#log-form").serialize(),
success: function(){
console.log($("#log-form").serialize());
}
})
.done(function() {
console.log("success");
});
});
login.php:
<?
session_start();
if ($_SESSION['logged-in']) {
echo 'Доступ заборонено!';
exit;
}
else {
require_once 'database.php';
$connect = mysqli_connect($host, $user, $pass, $db);
if (isset($_POST['log-submit-n']) && !$_SESSION['logged-in']) {
$login = $_POST['log-login-n'];
$pass = $_POST['log-pass-n'];
$sql = "SELECT * FROM `users` WHERE `login` = '$login'";
$res = mysqli_query($connect, $sql);
$row = mysqli_fetch_array($res);
$row_count = mysqli_num_rows($res);
$id = $row['id'];
if ($row_count == 1) {
$db_pass = $row['password'];
$db_login = $row['login'];
if ($login == $db_login && $pass == $db_pass) {
$_SESSION['logged-in'] = true;
$_SESSION['login'] = $login;
$_SESSION['id'] = $id;
}
else if ($login == $db_login && $pass!=$db_pass) {
$error = "false-pass";
json_encode($error);
}
}
else {
$error = "none-acc";
json_encode($error);
}
}
mysqli_close($connect);
}
?>
Так как Вы посылаете содержимое формы вручную (ajax-ом), то value кнопки с name="log-submit-n" в посылаемые данные не включается. Ваш серверный скрипт обернут в условие, проверяющее наличие в запросе $_POST['log-submit-n']. Этого ключа в запросе нет - ответ пустой, потому что Вы ничего в ответ не пишите.
Спрашивающему на заметку:
Удачно, что у меня сегодня хорошо работают телепатические способности. В такие вопросы следует включать html.
Update
В случае неудачной авторизации:
echo json_encode(array('result' => 'error', 'message' => 'explain what was wrong', data => NULL));
В случае удачной авторизации:
echo json_encode(array('result' => 'success', 'message' => 'All is good.', data => your_data));
В js:
success: function(data) {
console.log(data);
if (data.result != "success") {
// show error information to the user
alert(data.message);
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости