これは、ファイルダウンロードのためのリンクを1つ作成しようとしていると同時に、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>
問題はそのダウンロード火災であり、それはダウンロードダイアログを示して - 正しいです - それはそれは上に、また、クリックイベントを発生しても、クリックイベント関数内でログコンソールう投稿要求も起動しますが、投稿要求は決してサーバーで終わることはありません。私はtail -fのアクセスログファイルを持っていましたが、$ .post()のPOSTではなく、application.exeにはGETしか表示されませんでした。 Firebugには、location.hrefによって指定されたPOST http://ip/folder/が表示され、赤色でXと少し空白の応答フィールドが表示されます。火かき棒のための厳しいそれはサーバに送られたように見える...
私の説明はこれはhrefが$ .post()から風を取り除き、それが発射される前にブラウザをダウンロードにリダイレクトすることですファイル。ページ自体は変更されませんが、XHRでの投稿の処理は停止します...
誰もがこのために良い回避策を知っていますか?私は本当にIEにこの愚かなファイルのダウンロード警告バーを表示させないようにアプリケーションにネイティブのhrefリンクが必要ですと同時に私はフォームを提出するためには、ajaxが必要です...
ありがとう!
いくつかの理由はポストサイドで動作しますが、成功関数を発射しません...うーん。 – Tobias
ええ、何らかの理由で成功のコールバックdoesntは発射されます。サーバはdie( '{success:1}')を返します。今のところAJAXで何が起きても...私は火かき棒で反応を見るが、成功のコールバックはまったく呼び出されない...変だ。 – Tobias
私はheader( 'Content-Type:application/json')を削除しました。レスポンスから今度は成功コールバックを発射します... w.t.f. – Tobias