私の意図は、js/php
アプローチを使用してjQuerys click
とpost
イベントを使用してサーバーからダウンロードを開始することです。問題は、簡単なフォームのサブミットで同じインプリメンテーションのようにダウンロードウィンドウが正しく起動していないことです。私は欠けているものがアクション属性だと思うので、php
ファイルへのリダイレクトは実行されません。jQueryのクリックイベントとポストイベントを使用したフォーム提出の動作をシミュレートする最適な方法は何ですか
この例でそれが必要のように動作します。(ダウンロードウィンドウがポップアップ表示されません)
<!-- A hidden form to send POST parameters to the downloader.php -->
<form style="display: hidden" action="php/result_downloader.php" method="POST" class="form_downloader">
<input type="hidden" class="parameter1" name="timespan" value="daily"/>
<input type="hidden" class="parameter2" name="loggedInUser" value="admin"/>
</form>
$('.downloader img').click(function(){
$('.form_downloader').submit();
});
しかし、私は、プレーンjs
でそれを実装する場合、動作していないよう:
$('.downloader img').click(function(){
$.post("php/result_downloader.php", {
timespan: "daily",
loggedInUser: "admin" })
.fail(function(xhr, status, error) {
alert(error)
});
私は問題は、何のアクションも行われないということですか?行動が妨げられる。だから私は、静的な隠しHTMLフォーム上でそれを行うための最善のプログラミング習慣ではないと思うので、ダウンロードウィンドウが表示されることを、この提出フォームイベントを正確にシミュレートする方法を知りたい。さらに、私は静的なhtmlのアプローチは私の意見では少しハッキーですので、パラメータ値を動的に送信したいです。
違いは、送信イベントを発生させる最初のインスタンスでは、ポストリクエストが通常のフォーム送信のようにブラウザによって起動されることです。 2番目のインスタンスでは、ajax経由です。最初のケースの応答はブラウザによって処理されます。 2番目のケースの応答は、あなたのajaxコールバックに戻ります。あなたがそれをしていることは、あなた次第です。 –
クリックを使わずに '$( '#form_id')を実行してください。submit(function(ev){/ * $ .post()here * /; ev.preventDefault();}); 'EventObject.preventDefault()'は通常のフォーム送信を防ぎます。あなたは '$ .post()'にも成功したり、機能を終了したりしていません。 – PHPglue
@PHPglue私はフォームや提出物を使いたくありません。私はプレーンjでそれをやりたいので、パラメータを$ .post経由で動的にポストしますが、clickイベントでsubmitアクションをシミュレートします。 – Manuel