Вы должны использовать объект FormData, но он будет работать только в современных браузерах.
if (window.FormData) {
$('input[type=file]').change(function() {
var formdata = new FormData();
var file = this.files[0];
formdata.append("files[]", file);
$.ajax({
url: "upload.php",
type: "POST",
data: formdata,
processData: false,
contentType: false
});
});
}
Некоторые подробнее: https://developer.mozilla.org/en/XMLHttpRequest/FormData
Вы также можете увидеть LIB с примером HTML и некоторыми дополнительными функциями: http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/
Для поддержки старых браузеров, вы можете сделать IFRAME, клон входного файла элемента к iframe и представить форму там. Таким образом, страница не будет обновляться, и она будет похожа на AJAX.
http://valums.com/ajax-upload/ – Joe
и [jQuery Ajax File Upload] (http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload) – Quentin