Закачать файл на сервер с помощью 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, время: 16:26. |