Закачать файл на сервер с помощью AJAX
Есть калькулятор, в котором происходят различные вычисления и прочее, есть форма, в которой человек может оставить свои реквизиты и отправить свои контактные данные с результатами своих вычислений, выбранными позициями. Отправка происходит не через SEND а через $.post. Как можно добавить загрузку файла, что бы в скрипте получить реквизиты, необходимые для обработки в файле php и отправки?
|
эта тема уже обсуждалась, не раз. нет такой возможности, только html5
|
Ок, а с помощью AJAX загрузки файла?
|
я про это и говорил. через аякс не возможно отправить файл!!
есть объект FormData, но это html5. погуглите |
Цитата:
Изначально это XMLHttpRequest. И XMLHttpRequestUpload можно в ту же тему отнести. |
к сожалению необходим $.post, по этому и застрял, и на форум обратился
|
danik.js, и можно грузить без FormData?? и в html4 по моему нельзя выдрать бинарник из инпута тайп файл
|
Цитата:
|
skrudjmakdak, а как раньше грузили? Перекидывали инпут в скрытый iframe (хотя не очень себе представляю как это происходит) и засылали форму. Помоему jquery.form.js такое умеет.
|
Ок, спасибо за наводку, буду пробовать дальше
|
danik.js, вот.. iframe...
а человек говорит про аякс.. это разные вещи! |
Цитата:
|
это мне ссылка?? если мне, то нафига??))
|
Мужики, харЭ ссориться, лучше делом помогите))
|
<iframe name="myframe" style="display:none"></iframe> <form id="post" method="post" action="/post.php" target="myframe"> <input type="file" name="file"><br/> <input type="submit"> </form> |
Форма есть, спасибо. Есть даже обработчик в самом php файле (работа с файлом или массивом файлов), Сейчас дам код, и поясню чего нет.
function order(action) { var name = $("#name").val(); var tel = $("#tel").val(); var company = $("#company").val(); var city = $("#city").val(); var email = $("#email").val(); var fileAttach = document.getElementById('fileAttach').value; $.post('/send.php', {'action':action, 'name':name, 'tel':tel, 'company':company, 'city':city, 'email':email, 'fileAttach':fileAttach}, function(data) { if(data==='1') { $(".answer").html("Заявка отправлена! Спасибо за Ваш заказ!"); $(".answer").hide(); $(".forms").hide(); window.location = "http://www.domen.ru/success/"; } else { alert(data); } }); Вырвал значения из формы сюда, и передаю их дальше, в файл обработчик. Как их сюда можно перетянуть? P.S. файл приложен не целиком, т.к. там много разных параметров, лишний мусор, хотел показать принцип формирования данных |
<iframe name="myframe" style="display:none" onload="Donetest(this)"></iframe> <form id="post" method="post" action="/send.php" target="myframe"> <p><input name="action" value=""/> action</p> <p><input name="name" value=""/> name</p> <p><input name="tel" value=""/> tel</p> <p><input name="city" value=""/> city</p> <p><input name="email" value=""/> email</p> <p><input type="file" name="fileAttach"> fileAttach</p> <input type="submit"> </form> <script type="text/javascript"> function Donetest(frame) { alert($(frame).contents().find("body").html()); //тут проверяем, - что вернулось } </script> |
derbass, как быстрое решение, попробуй подключить jquery.form.js и использовать $(form).ajaxForm() (или как там, в общем смотри доки) вместо $.post
|
Цитата:
Цитата:
Цитата:
|
ну да.. я скопирую ту инфу из википедии:
AJAX — не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах: использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например: - с использованием XMLHttpRequest (основной объект); - через динамическое создание дочерних фреймов; - через динамическое создание тега <script>. - через динамическое создание тега <img>, как это реализовано в google analytics. но задача то изначально ставилась отправка через $.post на сколько я понял. а этот метод использует как я понимаю XMLHttpRequest.. или я не прав? |
Цитата:
|
но вот как будет, тогда и разговор будет другой.
п.с. вышла версия 2.0, надо юзать. а в ранних версиях через $.post отправить нельзя |
спасибо за инфу, уже понял что через $.post не отправить. Вопрос - а как можно совместить эти обе вещи?
|
Часовой пояс GMT +3, время: 08:07. |