2017-09-21 5 views
0

私の意図は、js/phpアプローチを使用してjQuerys clickpostイベントを使用してサーバーからダウンロードを開始することです。問題は、簡単なフォームのサブミットで同じインプリメンテーションのようにダウンロードウィンドウが正しく起動していないことです。私は欠けているものがアクション属性だと思うので、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のアプローチは私の意見では少しハッキーですので、パラメータ値を動的に送信したいです。

+0

違いは、送信イベントを発生させる最初のインスタンスでは、ポストリクエストが通常のフォーム送信のようにブラウザによって起動されることです。 2番目のインスタンスでは、ajax経由です。最初のケースの応答はブラウザによって処理されます。 2番目のケースの応答は、あなたのajaxコールバックに戻ります。あなたがそれをしていることは、あなた次第です。 –

+0

クリックを使わずに '$( '#form_id')を実行してください。submit(function(ev){/ * $ .post()here * /; ev.preventDefault();}); 'EventObject.preventDefault()'は通常のフォーム送信を防ぎます。あなたは '$ .post()'にも成功したり、機能を終了したりしていません。 – PHPglue

+0

@PHPglue私はフォームや提出物を使いたくありません。私はプレーンjでそれをやりたいので、パラメータを$ .post経由で動的にポストしますが、clickイベントでsubmitアクションをシミュレートします。 – Manuel

答えて

0

フィッティングソリューションのスカウトで、redirectプラグインが見つかりました。それを使用して、それはフォームが簡単な3ラインjsコードを提出シミュレートすることが可能です:

$('.downloader img').click(function(){ 
    $.redirect("php/result_downloader.php",{ timespan: "daily", loggedInUser: "admin"}); 
    }); 
}  

プラグインのアプローチに関しては、それは隠された形のような同様の程度に(問題の最初の例)を行いますバックグラウンドでjsコードの150行。フォームは動的に作成され、静的ではありません。しかし、全体的には、ダウンロードボタンが2つ以上ある場合は、利便性とコードの可読性を向上させるための悪い解決策ではありません。

関連する問題