У меня есть форма на сайте настройки, чтобы получить различные детали от пользователя. Имя, адрес и др. c. Я использую jQuery и ajax для публикации данных, которые затем отправляются по электронной почте владельцам веб-сайтов с использованием PHP.
. Я использую a для каждого l oop до l oop через p теги в форме, а затем добавить эти данные в массив. Если тег p имеет идентификатор «required» и значение пустое, то l oop прерывается и отображает сообщение для заполнения этого значения.
Я определил, что что-то в l oop вызывает проблему, как будто я изменяю l oop, чтобы просто добавить значение generi c для каждого входного сигнала, который он находит, затем данные сообщения успешно. Я просто не уверен, в чем может быть проблема.
Вот это jQuery:
$("#requestForm input[type='submit']").click(function() {
event.preventDefault();
var formData = [];
var allowSubmit;
$("#requestForm > div > p:not(.ignore)").each(function() {
if($(this).children("input[type='text']").length > 0) {
var input = $(this).find("input[type='text']").first();
}
else if($(this).children("input[type='checkbox']").length > 0) {
var input = $(this).children("input[type='checkbox']").first();
}
else if($(this).children("select").length > 0) {
var input = $(this).children("select").first();
}
else if($(this).children("textarea").length > 0) {
var input = $(this).children("textarea").first();
}
else {
var input = null;
}
if(input != null) {
if($(this).attr("id") == "required" && (input.val() == "" || input.val() == null)) {
$("#message").text($(this).children("label").text() + " is required");
allowSubmit = false;
return false;
}
else {
if (input.attr("type") == "checkbox") {
if(input.is(":checked")) {
formData[input.attr("name")] = "Yes";
}
else {
formData[input.attr("name")] = "No";
}
}
else {
$("#message").text("");
formData[$(this).children("label").text()] = input.val();
}
allowSubmit = true;
}
}
});
if(allowSubmit == false) {
return;
}
console.log(formData);
$.ajax({
url: root_dir + "scripts/sendBrochureRequest.php",
method: "POST",
dataType: "json",
data: ({formData}),
success: function(data) {
console.log(data);
}
});
});
В минуту все, что PHP делает, это echo json_encode ($ _ POST ['formData']); Так что я могу видеть, получено ли что-нибудь.
Когда ajax возвращает значение, оно соответствует исходному значению массива formData, поэтому он не собирает данные, добавляемые в массив с помощью l oop. Если я установлю для formData любое другое значение, то ajax вернет это установленное значение.