Проблема с порядком выполнения, я предполагаюPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с порядком выполнения, я предполагаю

Сообщение Anonymous »

Я схожу с ума! Я пытаюсь получить данные из формы и передать их PHP-скрипту, который помещает данные в CSV-файл и в базу данных. Это работает, однако я пытаюсь проверить передачу данных с помощью Javascript и ответ, который я получаю от сценария php. Когда сценарий php правильно добавил файлы в базу данных, он добавляет пару ключ: значение к передаваемым данным, которые я хочу проверить и определить, были ли данные помещены в базу данных. однако, когда я выполняю сценарий, значение моего объекта, которое я добавляю после ответа, который я получаю из php-скрипта, чтобы проверить, одинаковы ли они. Всегда будет заполнено в самом начале.
Сторона PHP :

Код: Выделить всё

$Submitted_data = json_decode(file_get_contents('php://input'), true); //saving the Post Request

//process data

if ($conn->query($sql) === TRUE) {
$Submitted_data["sqlTX"] = "New record created successfully";
echo json_encode($Submitted_data);
} else {
echo "Error: " . $sql . "
" . $conn->error;
}
В случае успеха я добавляю ключ «sqlTX» со значением «Новая запись создана успешно», поскольку я не вызываю файл .php из формы напрямую, я вызываю его с помощью выборки JavaScript, чтобы предотвратить загрузку. php-сайт, и пользователи остаются на том же сайте. поэтому я пытаюсь проверить данные, помещенные в базу данных, сравнивая переданный объект, к которому я добавил ключ: значение, с объектом formattedFormData, который я использовал для отправки в скрипт phph. Поскольку я теперь знаю, какой ключ: значение я ожидаю получить, я добавляю это к объекту, который я использовал для передачи в скрипт после того, как я использовал выборку для передачи данных, однако, когда я регистрирую объект на консоли, он всегда включен в первый раз. я проверяю, что он заполнен

Код: Выделить всё

function txData() {

const form = document.getElementById('dataInput');
const time = new Date().toLocaleDateString('en-EN') + " - " + new Date().toLocaleTimeString('en-EN');
const formattedFormData = {} //resetting object since i was thinking thats the issue

formattedFormData.Name = form.Name.value;
formattedFormData.Attend = form.Attend.value;
formattedFormData.Participants = form.Participants.value;
formattedFormData.Contact = form.Contact.value;
formattedFormData.Message = form.Message.value;
formattedFormData.Timestamp = time;

console.log("initial formattedFormData");
console.log(formattedFormData);

return fetch('submitAttendance.php',
{
method: 'POST',
body: JSON.stringify(formattedFormData)

})
.then(function(response) {
return response.json();
})
.then(function(data) {
console.log("data");
console.log(data);

console.log("before adding key:value");
console.log(formattedFormData);

formattedFormData.sqlTX = "New record created successfully!!!!!!"; //Adding !!!!! to be able to see the difference in the console log and get a return false for further error handling

console.log("after adding key:value");
console.log(formattedFormData);

if(data == formattedFormData){
console.log("postdata true");
return true;
}
else {
console.log("postdata false");
return false;
}

})
}

Почему formattedFormData в первом console.log("начальный formattedFormData") сразу после инициализации заполняется ключом: значением "sqlTX": "Новая запись создана успешно!!!!! !" даже я использовал then(), чтобы дождаться завершения выборки? Таким образом, сценарий будет отображать успешный запуск даже в случае сбоя передачи или ввода в базу данных? Я уверен, что есть что-то, чего я не понимаю или ошибаюсь в этой концепции...
У меня было это в обычной функции, изменил его на async/await и теперь Promise с then(), так как я думал, что проблема связана с порядком выполнения. Прочитал о стеке вызовов и попробовал много отладки, чтобы выяснить, почему переменная получает ключ:значение сразу после ее инициализации, но не может получить ответ

Подробнее здесь: https://stackoverflow.com/questions/786 ... ould-guess
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»