#php #html #forms #post #input
#php #HTML #формы #Публикация #ввод
Вопрос:
Часть на моей странице отвечает за несколько загрузок изображений, это работало некоторое время, но больше не работает. Я использую WampServer версии 3.1.7 64bit и тестирую на localhost.
Я пробовал принимать и отправлять данные через ajax вместо отправки html, но я также не получил данные на стороне php, но на стороне клиента у меня были все данные перед отправкой ( FormData()
).
HTML-часть:
<div class="div_shadow_here">
<form id="gallery_data" method="post" enctype="multipart/form-data">
<input type="hidden" name="formid" value="<?php echo $_SESSION[" formid "]; ?>" />
<table class="news_table">
<tr>
<td>
<p class="name_col">Gallery name:</p>
</td>
<td>
<input class="input_news" id="gallery_title" type="text" name="gallery_title" />
</td>
</tr>
<tr>
<td>
<p class="name_col">Picture(s):</p>
</td>
<td>
<input class="input_news" id="news_picture_path" type="file" name="picture_path[]" multiple />
<label id="label_for_input" for="picture_path">Select picture(s)</label><span id="uploadState"></span>
</td>
</tr>
<tr>
<td></td>
<td>
<div id="img_container"></div>
</td>
</tr>
</table>
<button class="print_button hidden_a" type="submit" name="login" id="save_news" form="gallery_data">Save</button>
</form>
</div>
Часть PHP для тестирования:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<script>console.log("Not empty")</script>';
if (isset($_POST['formid'])) {
echo '<script>console.log("'.$_POST['formid'].
'")</script>';
}
if (isset($_POST['gallery_title'])) {
echo '<script>console.log("'.$_POST['gallery_title'].
'")</script>';
}
if (isset($_FILES['picture_path']['name'])) {
echo '<script>console.log("'.count($_FILES['picture_path']['name']).
'")</script>';
}
} else {
echo '<script>console.log("Empty")</script>';
}
Я получаю Notice: Undefined index: gallery_title..
ошибки без isset($_POST['gallery_title'])
тестирования (то же самое для всех других полей ввода).
Ajax для тестирования:
$('body').on('click', '#save_news', function(e) {
e.preventDefault();
var formData = new FormData($(this).parents('form')[0]);
for (var key of formData.keys()) {
console.log(key);
}
for (var value of formData.values()) {
console.log(value);
}
$.ajax({
url: 'galleryupload.php',
type: 'POST',
success: function(data) {
alert("Data Uploaded: " data);
},
data: formData,
cache: false,
contentType: false,
processData: false
});
return false;
});
Комментарии:
1. Покажите код AJAX.
2. У вас есть пробелы внутри $ _SESSION[«formid»], это работает, но это очень плохая практика. Ваш код работает, если вы помещаете «действие» внутри формы. но добавьте свой AJAX-код, и, возможно, мы сможем вам помочь
3. Итак, ошибка предполагает, что ничего не было опубликовано с таким именем, сделайте
var_dump($_POST);
в вашем php, чтобы увидеть, что на самом деле получено4. Ваш код отлично работает на моем ноутбуке … извините, ошибка должна быть в другой части вашего кода. (Кстати, у вас есть скрипт label внутри alert… Я думаю, вы прошли тест XD)
5. В моем реальном коде нет пробелов, но программа форматирования HTML поместила их туда, так что это не должно быть проблемой. Код работал более 1 года без ajax. Просто отправляю форму с помощью кнопки. Но это больше не работает, и я не знаю почему. Вот почему я попытался использовать ajax вместо отправки HTML, но возникает та же проблема (PHP-сторона не получила данные, говорит Undefined index: ..).