Доброго времени суток, господа. Есть тестовая форма с одним [input=file], которая вполне успешно отправляет файл через ajax на сервер. Однако нужно переместить ее содержимое в рабочую форму, т.е. организовать передачу файла не через submit, а через, допустим, .click() с кнопки "Загрузить". Проблема в том, что не найти альтернативы: Код (Javascript): $("form[name='uploader']").submit(function(e) { var formData = new FormData($(this)[0]); ибо пример, подобный тому, что ниже, уже не воспринимается php-шными процедурами. Код (Javascript): $("#butUpload").click(function(e) { var formData = new FormData($(form[input='file'])); То есть, значение совсем не то. В идеале, вместе с самим файлом, нужно зацепить значение текстового поля и присовокупить к formData - или как-то иначе добавить в AJAX-запрос. Весь код JS, который не работает: Код (Javascript): $("#upload").click(function() { var formData = new FormData($("form[input='file']")); $.ajax({ url: 'ajax.php', type: "POST", data: formData, async: false, success: function (msg) { alert(msg); }, error: function(msg) { alert('Ошибка!'); }, cache: false, contentType: false, processData: false }); }); Просьба больно тапками не кидаться, только начинаю вникать в JS + PHP.
При чем тут php? Вы документацию по FormData читали? В конструктор FormData должна быть передана форма. А вы пытаетесь передать непойми что. Что по-вашему вернет селектор "form[input='file']"? По-моему он должен найти и вернуть <form input='file'>blahblahblah</form>. У вас такое есть? С невалидным атрибутом? Далее. При чем тут вообще FormData, когда у вас цель - поменять событие, инициирующее отправку? Ну так сохдавай formData с цельной формы, а потом делай append нужных данных