Данные Ajax не попадают в массив $ _POST

Извините, если этот вопрос уже был задан, но ни один другой ответ на другие вопросы не помог мне решить мою проблему.

Я пишу процедуру входа пользователя, которая использует .ajax() позвони моему login.php файл в журнал пользователя. Однако, после нескольких часов отладки, я обнаружил, что проблема в том, что data: {user: username, pass: password}линия в моем вызове ajax, кажется, не отправляет данные на мой $_POST массив в login.php, На самом деле, это даже не перекликается с моим if заявление в login.php, Я знаю, что эта проблема звучит похоже на другие, но я буквально перепробовал на этом сайте все, что связано с этой темой, но безуспешно.

Вот login_form.php, Он содержит .ajax() код внизу:

<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
<link rel="stylesheet" type="text/css" href="css/custom-style.css" media="screen">
</head>
<body>
<div id="login_container">
<img src="img/sflogo.gif" alt="Sutton Ferneries" id="sflogo_login">
<p id="add_err">We're sorry, we weren't able to find that username/password.</p>
<input type="text" name="username" id="username" placeholder="Username">
<input type="password" name="password" id="password" placeholder="Password">
<p id="learn_login">Want to know the benefits of having an online account with us? <a href="#">Learn More.</a></p>
<button id="login_btn">Log In</button>
</div>
</body><script type="text/javascript">

$(document).ready(function() {
$("#add_err").css('display', 'none', 'important');
$("#login_btn").on("click", function(e) {

e.preventDefault();
var username = $("#username").val();
var password = document.getElementById("password");
password = password.value;

$.ajax({
url: "login.php",
data: { user: username, pass: password },
type: "POST",
dataType: "json",
beforeSend: function() {
$("#add_err").css('display', 'block', 'important');
$("#add_err").html("Loading...");
},
success: function(data) {
document.write(data);
if (data == 'true') {
$("#login_container").html(data);
//closeLightbox();
window.location = "index.php";
} else {
$("#add_err").css('display', 'block', 'important');
$("#add_err").html("Wrong username or password.");
}
}
});
});
});

</script>
</html>

И вот login.php:

<?php

header("Content-Type: application/json, true");

if (!isset($_POST)) {
echo 'Post is null';
} else {
echo 'Everything seems to be okay.';
}

$username = $_POST['user'];
$password = $_POST['pass'];

?>

0

Решение

Удалить

dataType: "json",

а также

header("Content-Type: application/json, true");

и вы получите результат, если не хотите удалять возвращать результат json и декодировать в части успеха и показывать их

1

Другие решения

Ваш код работает отлично, попробуйте распечатать данные

    echo   $username = $_POST['user'];

echo $password = $_POST['pass'];
0

Вы используете JSON в AJAX. Таким образом, на выходе должно быть что-то вроде этого.

$output['msg'] = 'Here is your return';

echo json_encode($output);

Попробуйте это в login.php

В JS вы получите возврат как

alert(data.msg);
0

Вы не включили Jquery min файл в свой код:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

и почему вы получаете имя пользователя через метод jquery и пароль через метод javascript .. ?? получить это так:

var username = $("#username").val();
var password = $("#password").val();

Я только что сделал вышеуказанные изменения, и все работало нормально .. !!

0
По вопросам рекламы [email protected]