как сделать загрузку файла с помощью сериализации jquery

Таким образом, у меня есть форма, и я передаю форму через ajax, используя функцию сериализации jquery

serialized = $(Forms).serialize(); $.ajax({ type : "POST", cache : false, url : "blah", data : serialized, success: function(data) { } 

но тогда, если форма имеет поле <input type="file"> …. как передать файл в форму с помощью этого метода сериализации ajax … печать $ _FILES ничего не выводит

Файл не может быть загружен с помощью AJAX, потому что вы не можете получить доступ к содержимому файла, хранящегося на клиентском компьютере, и отправить его в запросе с помощью javascript. Одним из способов достижения этого является использование скрытых фреймов. Есть приятный плагин jquery form, который позволяет вам создавать AJAXify ваши формы, а также поддерживает загрузку файлов . Поэтому, используя этот плагин, ваш код будет выглядеть следующим образом:

 $(function() { $('#ifoftheform').ajaxForm(function(result) { alert('the form was successfully processed'); }); }); 

Плагин автоматически заботится о подписке на событие submit формы, отменяя отправку по умолчанию, сериализуя значения, используя правильный метод и обрабатывая поля загрузки файлов, …

Теперь вы можете загружать файлы с помощью Ajax!

Примеры:

https://stackoverflow.com/a/8758614/1072492

http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/

Он работает для любого типа формы

 $(document).on("submit", "form", function(event) { event.preventDefault(); var url=$(this).attr("action"); $.ajax({ url: url, type: $(this).attr("method"), dataType: "JSON", data: new FormData(this), processData: false, contentType: false, success: function (data, status) { }, error: function (xhr, desc, err) { } }); }); 

Вы можете загружать файлы через AJAX с помощью метода FormData. Хотя IE7,8 и 9 не поддерживают функциональность FormData.

 $.ajax({ url: "ajax.php", type: "POST", data: new FormData('form'), contentType: false, cache: false, processData:false, success: function(data) { $("#response").html(data); } }); 

HTML5 представляет класс FormData который можно использовать для загрузки файлов с помощью ajax.

Поддержка FormData начинается со следующих версий настольных браузеров. IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+

https://developer.mozilla.org/en/docs/Web/API/FormData/FormData