Я пытаюсь загрузить файлы с Ajax & PHP, но проблема в том, что я не могу отправить текст типа ввода, который содержит идентификатор папки.Как отправить переменную с помощью Ajax?
Вот мой HTML:
<form method="post" enctype="multipart/form-data" action="uploadify.php">
<input type="file" name="images" id="images" multiple />
<input type="hidden" name="eid" value="<?php echo $eid;?>" />
<input type="btn submit" id="btn" value="Upload" />
</form>
<div id="response"></div>
<ul id="image-list">
</ul>
Вот мой JavaScript:
(function() {
var input = document.getElementById("images"),
formdata = false;
function showUploadedItem (source) {
var list = document.getElementById("image-list"),
li = document.createElement("li"),
img = document.createElement("img");
img.src = source;
li.appendChild(img);
list.appendChild(li);
}
if (window.FormData) {
formdata = new FormData();
document.getElementById("btn").style.display = "none";
}
input.addEventListener("change", function (evt) {
document.getElementById("response").innerHTML = "Uploading . . ."
var i = 0, len = this.files.length, img, reader, file;
for (; i < len; i++) {
file = this.files[i];
if (!!file.type.match(/image.*/)) {
if (window.FileReader) {
reader = new FileReader();
reader.onloadend = function (e) {
showUploadedItem(e.target.result, file.fileName);
};
reader.readAsDataURL(file);
}
if (formdata) {
formdata.append("images[]", file);
}
}
}
if (formdata) {
$.ajax({
url: "uploadify.php",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (res) {
document.getElementById("response").innerHTML = res;
}
});
}
}, false);
}());
А вот мой PHP:
<?php
//upload.php
$eid = $_POST['eid'];
$output_dir = "./images/icons/".$eid."/screenshots/";
if (!file_exists($output_dir) and !is_dir($output_dir)) {
mkdir($output_dir);
}
foreach ($_FILES["images"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$name = $_FILES["images"]["name"][$key];
move_uploaded_file($_FILES["images"]["tmp_name"][$key], "$output_dir" . $_FILES['images']['name'][$key]);
}
}
echo "<h2>Successfully Uploaded Images $eid</h2>";
То, что я хочу сделать то, что я отправка типа ввода скрытого имени = eid, но не знаю, что не так, почему я не могу отправить это через мою функцию JS?
a) Начните с чего-то более простого, например текста, а не файлов. б) Вы даже не используете jQuery, попробуйте, это упростит ситуацию, вы можете перейти к чистому JavaScript, если хотите, чтобы это закончилось. c) Не используйте форму, если вы собираетесь использовать AJAX, красота ajax заключается в том, что вам не нужны формы, вам просто нужны поля ввода и кнопки, которые вы можете слушать. – Jonast92
@ Jonast92 Я знаю, что ему не нужны формы, и я знаю, как отправлять только текстовые поля. Это была функция, которую я нашел на nettuts, но единственное, чего не хватает, это то, что я не могу отправить это поле eid? –
Если я смогу опубликовать это поле с помощью этой функции, моя галерея будет заполнена –