我是新來的jQuery/Ajax和我試圖上傳像這樣一個文件:阿賈克斯文件上傳upload.php的不獲取調用
var fd = new FormData();
fd.append('file', file);
$.ajax({
xhr: function() {
var xhrobj = $.ajaxSettings.xhr();
if (xhrobj.upload) {
xhrobj.upload.addEventListener('progress', function(e) {
var percent = 0;
if (e.lengthComputable) {
percent = Math.floor(e.loaded/e.total * 100);
}
progressDiv.find('progress').val(percent);
progressDiv.find('b').html(percent + '%');
});
}
},
type: 'POST',
url: 'upload.php',
data: fd,
success: function(data) {
progressDiv.find('progress').val(100);
progressDiv.find('b').html('100%');
alert(data);
},
error: function() {
alert('Error uploading!');
}
});
我upload.php
文件看起來像這樣:
<?php
file_put_contents('log.txt', "LOG\n");
file_put_contents('log.txt', implode(', ', $_FILES) . "\n", FILE_APPEND);
$target = 'upload/' . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $target)) {
file_put_contents('log.txt', "SUCCESS\n", FILE_APPEND);
} else {
file_put_contents('log.txt', "FAILURE\n", FILE_APPEND);
}
?>
問題是進度條保持爲0,並且不出現任何警報。也沒有什麼東西正在寫入log
文件,這意味着upload.php
甚至沒有被調用。
我在做什麼錯?
編輯:
搜索了一會兒我碰到這個漂亮的小問題跌跌撞撞後:Submitting a file with jQuery.ajax gives TypeError
因此增加contentType: false
和processData: false
似乎做了什麼。現在我收到警告「錯誤上傳」,但我仍然認爲upload.php
正在被調用,因爲沒有任何內容正在寫入日誌。完成這些更改後註釋掉xhr的內容可以完成上傳。現在問題變成xhr的東西有什麼問題?
日誌是在爲'upload.php'相同的路徑本地存儲的文件。如果我通過輸入正常寫入的URL直接訪問'upload.php'。 – carloabelli 2014-08-31 19:47:26
好吧它是互聯網滯後...將刪除我的評論 – Tushar 2014-08-31 19:59:47