Я пытаюсь получить одну ссылку для загрузки файла и одновременно отправить форму сообщения через ajax.
вроде выглядит так:
<form action="" method="post" id="form">
<input type="text" name="email" id="email" value="" />
<input type="hidden" name="subscriber" id="subscriber" value="newsletter" />
<a href="/files/application.exe" id="download">trial download</a>
</form>
<script type="text/javascript" src="jquery"></script>
<script type="text/javascript">
// prevent default submit action caused by enter key etc.
$("#form").bind('submit',function(event){event.preventDefault();});
$('#download').click(function(){
$.post(location.href, $('#form').serialize(), function(){
$('#form').hide();
});
});
</script>
проблема заключается в том, что загрузка запускается, и отображается диалоговое окно загрузки - что является правильным - оно также запускает событие click и даже ведет журнал консоли внутри функции события click, оно даже запускает запрос post, но запрос post никогда заканчивается на сервере. У меня был файл журнала доступа в tail -f, и он показывает только GET для application.exe, но не POST из $ .post (). в firebug он показывает POST http://ip/folder/, заданный location.href, и помечен красным с небольшим X и пустым полем ответа. похоже на то, что его отправили на сервер ...
Мое объяснение этому заключается в том, что href извлекает из $ .post () ветер и до его запуска перенаправляет браузер на загружаемый файл. не изменяет саму страницу, но останавливает действие публикации через XHR ...
кто-нибудь знает хороший обходной путь для этого? мне действительно нужна собственная ссылка href на приложение, чтобы IE не вызывал эту глупую строку предупреждения о загрузке файлов, и в то же время мне нужен ajax для отправки формы ...
спасибо!