Сообщение типа $ .ajax пусто в PHP $ _POST

Запрос ajax прекрасно работает в части javascript, но когда дело доходит до PHP, POST стирается и не передает только одно значение.

Аякс выглядит так:

function goals() { //dynamically added forms with their corresponding inputs to be posted
setForms.forEach(function(formIndex) { //the forms that are added and their index
var formData = {
'email': "<?php echo $_SESSION["email"]; ?>", //session email works fine
'goalRow': formIndex,
'motivation': $("#goals"+formIndex+"-1").val(), //formIndex works fine adding the right number to get the values
'priority': $("#goals"+formIndex+"-2").val(),
'goal': $("#goals"+formIndex+"-3").val(),
'measure': $("#goals"+formIndex+"-4").val(),
'endDate': $("#goals"+formIndex+"-5").val(),
'phase1': $("#goals"+formIndex+"-6").val(),
'phase2': $("#goals"+formIndex+"-7").val(),
'phase3': $("#goals"+formIndex+"-8").val(),
'notes': $("#goals"+formIndex+"-9").val(),
'notification': $("#goals"+formIndex+"-10").val(),
'frequency': $("#goals"+formIndex+"-11").val(),
'notificationStart': $("#goals"+formIndex+"-12").val(),
};
$.ajax({ //posting the form
type: "POST",
url: "?service=goalsabroad-api", //page for the action
data: formData, //data object
success: function() { //log to make sure data is passed
console.log(formData);
}
});
});
}

Данные передаются правильно, и все появляется при регистрации для всех форм без проблем. Но когда я попадаю на страницу PHP, он говорит Undefined index:

Вкладка Chrome Dev показывает статус 200 и регистрирует правильно. При открытии в новой вкладке я вижу ошибки PHP.
PHP выглядит так:

<?php

var_dump($_POST);


$email              = $_POST["email"];
$goalRow            = $_POST["goalRow"];
$motivation         = $_POST["motivation"];
$priority           = $_POST["priority"];
$goal               = $_POST["goal"];
$measure            = $_POST["measure"];
$endDate            = $_POST["endDate"];
$phase1             = $_POST["phase1"];
$phase2             = $_POST["phase2"];
$phase3             = $_POST["phase3"];
$notes              = $_POST["notes"];
$notification       = $_POST["notification"];
$frequency          = $_POST["frequency"];
$notificationStart  = $_POST["notificationEnd"];

$query = "SELECT email FROM goalsabroad WHERE email = '$email' AND goalRow = '$goalRow'";
$result = mysqli_query($connect, $query);

if (mysqli_num_rows($result) === 0) {
echo "empty";
$query = "INSERT INTO goalsabroad (email, goalRow, motivation, priority, goal, measure, endDate, phase1, phase2, phase3, notes, notification, frequency, notificationStart)
VALUES ('$email', '$goalRow', '$motivation', '$priority', '$goal', '$measure', '$endDate', '$phase1', '$phase2', '$phase3', '$notes', '$notification', '$frequency', '$notificationSart')";
echo $query;
mysqli_query($connect, $query);
} else {
$query = "UPDATE goalsabroad SET motivation = '$motivation'
AND priority = '$priority'
AND goal = '$goal'
AND measure = '$measure'
AND endDate = '$endDate'
AND phase1 = '$phase1'
AND phase2 = '$phase2'
AND phase3 = '$phase3'
AND notes = '$notes'
AND notification = '$notification'
AND frequency = '$frequency'
AND notificationStart = '$notificationStart'
WHERE email = '$email' AND goalRow = '$goalRow'";
echo $query;
mysqli_query($connect, $query);
}
?>

Сообщение ajax должно быть успешным, потому что запрос выполняется и новые строки добавляются, как и ожидалось, НО только поле электронной почты добавляет к запросу все остальное пусто (а echo $query возвращает пустые поля, даже электронную почту, и var_dump($_POST) также возвращает array(0) {}

Файл .htaccess перенаправляет .php в формат «без расширений», поэтому URL не имеет .php (но я пробовал оба), как и все остальные параметры этого поста.

Я в основном проверил каждый пост stackoverflow об этой теме, но я не мог найти что-нибудь, чтобы заставить его работать, может быть, у меня проблема, но у меня не было кого-то еще, чтобы нажать кнопку для меня … может быть, я просто подчеркнул себя так много на этом Я не вижу очевидного. Спасибо за помощь.

0

Решение

В вашем PHP-скрипте у вас есть:

$notificationStart  = $_POST["notificationEnd"];

Но ваш Ajax-вызов отправляет

'notificationStart': $("#goals"+formIndex+"-12").val(),

При поиске $ _POST [‘messagesEnd’] это будет неопределенный индекс.

2

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector