0

人が「送信」をクリックするとAjaxが起動e.preventDefault();され、フォームが実際に送信されないように使用されるフォームがあります。

私の問題: フォームをサーバーに送信したいのですが、Ajax が成功して戻ってきた後でのみです。

例として、次のシナリオを達成しようとしています。

  • ユーザーが [送信] をクリックする
  • Ajax が起動されて何らかの情報が送信され、ユーザーはページに留まります。
  • Ajax が戻ってきて、そのsuccess:関数を起動できるようになりました。
  • success 関数が起動form dataされ、サイト上の がサーバーに送信されます。

html:

   <form name="demoFiler" action="save/uploadCreate.php" method="POST" enctype="multipart/form-data">

        //Some inputs, checkboxes radios etc.

        <input type="submit" name="submitHandler" id="submitHandler" value="Upload" class="buttonUpload hideButton" />

    </form>

Javascript:

    document.getElementById(this.config.form).addEventListener("submit", submitMe, false);

    function submitMe(e){
    e.stopPropagation(); e.preventDefault();

    //Necessary vars for the 'data' defined here

    $.ajax({
        type:"POST",
        url:this.config.uploadUrl,
        data:data,
        cache: false,
        contentType: false,
        processData: false,
        success:function(rponse){
                         //This is where we need our Success function to SUBMIT the form using uploadCreate.php
        }
    });

    }
4

2 に答える 2

1

フォーム送信イベントではなくクリック イベントにボタンをバインドし、 ajax コールバック.submitのフォーム要素で関数を起動します。success

$("#submitHandler").click(function(e) {
   e.preventDefault();

   //Fill "data" variable
   var data = {};

   //set the url
   var url = "someurl";

   $.ajax({
    type:"POST",
    url:url,
    data:data,
    cache: false,
    contentType: false,
    processData: false,
    success:function(rponse){
       //test rponse then do below.
       $("form[name=demoFiler]").submit();
    }
   });
});
于 2013-08-03T15:38:28.350 に答える