在$ .ajax中替换async:false

时间:2013-10-18 09:11:08

标签: ajax form-submit

我有一个表单,将数据提交到数据库,然后提交给谷歌文档。 我正在使用jquery ajax来实现这一目标。 的javascript:

              var name ="a";
              var company = "b";
              var phone = "1";
                ...

              $.ajax({
                    async: false,
                    url: "view/templates/includes/abc.php",
                    //type: 'POST',
                    //timeout: 10000,
                    data: {
                          "name": name,
                          "company": company,
                          "phone": phone,
                          "email": email,
                          "comments": comments
                    },
                    success: function(data) {
                          //called when successful
                          alert(data);
                          //alert('success');
                          $('#php-code').html(data);
                    },
                    error: function(e) {
                          //  alert(e.message);
                          //called when there is an error
                          //console.log(e.message);
                    }
              });
              return true;
        }

abc.php是我将代码插入数据库的代码所在。

现在问题是我不想使用async:false因为我读它应该永远不会被使用,因为它可能导致浏览器挂起并且它破坏了使用ajax的目的。但是,如果我不使用async:false,则在我的ajax响应到来之前提交表单,因此它总是转到错误函数。

如何不使用async:false?

1 个答案:

答案 0 :(得分:1)

您可以在提交时调用ajax函数。

您可能希望停止在活动中提交表单(可能会点击按钮)。

在ajax成功方法中,明确提交表单。 (可以使用jQuery - $('#id_of_form').submit()

完成

EX。可以按照步骤进行,

$('#id_button_submit').click(function(event){
// this will prevent form to be submitted
             event.preventDefault();
              // call the function of ajax 
              serviceCall();
          });

在ajax的成功方法

success: function(data) {
         $('#id_of_form').submit();
         // rest of your code
},

或者jQuery插件http://malsup.com/jquery/form/#ajaxSubmit可能对您有用