Как загрузить файлы с помощью jQuery ajax-функции с PHP?

Вот моя нерабочая попытка:

<script> function uploadImageSubmit() { var imageFile = $('.imageFile').val(); $.ajax({ url: 'ajax.php?request=upload-image&file='+imageFile, success: function(output) { alert(output); } }); } </script> <h2>Upload File</h2> <form> <input type="file" class="imageFile" /> <a onClick="uploadImageSubmit()">Upload</a> </form> 

Код на "ajax.php":

 <?php $action = $_GET['request']; switch($action) { case 'upload-image': $imageFile = $_GET['file']; $name = $_FILES[$imageFile] ['name']; $tmpLocation = $_FILES[$imageFile] ['tmp_name']; $upload = move_uploaded_file($tmpLocation, "files/$name"); echo ($upload) ? $name.' uploaded successfully!' : 'File not uploaded.'; end; } ?> 

Я не могу загрузить файл сообщения. Я думаю, это потому, что, хотя строки могут быть переданы через URL-адрес, пути к файлу не могут по какой-то причине. Но опять же я понятия не имею, почему он не работает. Может кто-нибудь выяснить, что случилось, пожалуйста?

На самом деле HTML5 и новый API файлов поддерживают загрузку через XmlHttpRequest. Он прекрасно работает в Firefox 4 и Chrome.

XmlHttpRequest не поддерживает загрузку файлов. вам нужно использовать скрытый iframe или флеш-решение.

Вы не можете загружать файл, используя обычный JS / AJAX. Известный трюк заключается в том, чтобы опубликовать файл в скрытом iframe и обновить iframe.