php не видит данные ajax, хотя по логам они проходят
Есть форма, с нее данные передаются через ajax на php. Вернувшийся ответ записывается в отдельный div. Стал разбираться что не так, упростил php по максимуму. В итоге отладчик показывает что данные приняты, но php их как будто не видит.
ajax:
$(function(){
var reg_message = $('#reg_message');
$('#submitReg').on('click', function(){
var dat1 = {
email: $('#InputEmail').val(),
login: $('#InputLogin').val(),
pass: $('#InputPassword').val(),
repeatPassword: $('#RepeatPassword').val(),
agree: $('#Check').val()
}
var dat = JSON.stringify(dat1);
$.ajax({
url: 'testreg1.php',
type: 'POST',
data: dat,
success: function(ans){
document.getElementById("reg_message").innerHTML = ans;
document.getElementById("test_message").innerHTML = dat;
}
});
});
});
testreg1.php:
<?php
if(isset($_POST['dat'])) {
echo "Goog";
} else {
echo "Error";
}
?>
Скрипт всегда выводит Error. В консоли в пунктах "Данные форм" и "Полезная нагрузка" выводит полученный json dat.
Ответы (2 шт):
Попробуйте поставить EventLeastener на событие submit,
используйте функцию event.preventDefault(); (для отмены обновления страницы при отправке). В testreg1.php сделайте var_dump($_POST), и посмотрите какие данные вам пришли.
Советую вам попробовать такую форму:
$('form').on('submit', function(event){
event.preventDefault();
$.ajax({
url: 'testreg1.php',
type: 'POST',
data: $(this).serialize(),
success: function(ans){
console.log(ans)
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
Ошибка в том что вы проверяете в массиве POST ключ 'dat'. А у вас в js это переменная которая содержит объект с ключами email, login, pass и т.д. Вот их и повторяйте в php: $_POST['email'] , $_POST['login'] .....
