0

我有一个表单,一旦有人单击“提交”,就会触发并e.preventDefault();使用 Ajax,以便表单实际上不会提交。

我的问题:我确实希望将表单提交到服务器,但只有在 Ajax 成功返回之后。

因此,作为一个例子,我试图实现以下场景:

  • 用户点击“提交”
  • Ajax 被触发发送一些信息,并且用户仍然在页面上。
  • Ajax 又回来了,我们现在可以启动它的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 回答
0

由于您已经在使用 jQuery,请尝试以下操作:

$('#'+this.config.form).submit(function(e) {
    var $this = $(this);
    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) {
            // do something with rponse
            $this.off('submit').submit(); // unbind the handler and submit
        }
    });
}
于 2013-08-03T15:35:13.647 回答