不知道是怎麼回事。我試圖通過AJAX從index.html
文件,該文件中,術語運行POST到upload.php
然後返回文件的短網址的代碼對用戶上傳用戶文件。明確的jQuery Ajax和隱藏的div對象
在我的情況下,一旦用戶上傳文件,它會給出鏈接,然後如果他上傳另一個沒有完整頁面的文件 - 通過F5刷新,腳本將重新上傳前一個文件,並重新創建另一個短文件,前一個文件的代碼和新文件的新短代碼
更不用說,由於某些原因,一旦新文件上傳後實際的div與正在返回給用戶的鏈接不會消失,因此用戶獲取代碼舊文件和新文件的代碼,我不完全想要。
一旦文件上傳完成,POST應該不再有它,並且一旦用戶上傳新文件,div應該只對新文件具有短代碼,但不具有帶有2個不同代碼的2個div到舊的新文件。
這裏是jQuery代碼
(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");
a = document.createElement("a");
img.src = source;
li.appendChild(img);
list.appendChild(li);
a.href = source;
}
if (window.FormData) {
formdata = new FormData();
document.getElementById("btn").style.display = "none";
}
input.addEventListener("change", function (evt) {
document.getElementById("response").innerHTML = "<div class='uploading'></div>"
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: "upload.php",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (res) {
document.getElementById("response").innerHTML = res;
}
});
}
}, false);
}());
而且你可以在測試現場:cyogen.com嘗試上傳一個文件,然後另一個你短鏈接後,然後你會明白我的意思。
是文件實際上上傳到服務器?由於Ajax無法直接處理文件上傳,因此您不得不使用iframe或類似的東西來進行文件上載,而無需刷新頁面。 – SISYN
這些文件被推通過POST方法,並從與移動多數民衆贊成被通過AJAX表單提交的文件中有自己的upload.php的交易,以upload.php的。 –
爲什麼在jQuery環境中使用'document.getElementById'東西? – moonwave99