jquery表单使用ajax提交

时间:2013-06-27 12:37:08

标签: jquery ajax forms

我想使用ajax提交表单。

以下是我的代码:

$("#loginForm").submit(function() {
var url = <url>;
$.ajax({
       type: "POST",
       url: url,
       data: $("#loginForm").serialize(), // serializes the form's elements.
       success: function(data)
       {
            if(data == '0'){ 
                    $("#loginErr").show();
                    return false;
            }
            else if(data == '1')
                    return true;
       }
     });
  return false;
});

如果ajax响应为1,我想提交表单但不管数据值如何,表单都没有提交。它的返回值总是错误的。我检查过它是否达到了条件,但是在返回时没有停止执行。

我如何提交表格?我想刷新我的页面。

3 个答案:

答案 0 :(得分:1)

使用:

$("#loginForm").submit(function (event) {
    var url = < url > ;
    $.ajax({
        type: "POST",
        url: url,
        context:this, //setting context on form
        data: $("#loginForm").serialize(), // serializes the form's elements.
        success: function (data) {
            if (data == '0') $("#loginErr").show();    
            else if (data == '1') this.submit();//use js submit event, not jq. We need to manually submit it now that we know its successful
        }
    });
    event.preventDefault(); //Stop the form submitting straight away
});

答案 1 :(得分:0)

我不确定您要检查哪些数据。但是如果这些数据来自表单本身,那么你需要在ajax调用之前检查它。一旦你进行了ajax post call,你的表单就已经提交了。

 $("#loginForm").submit(function(e) 
 {

 var url = <url>;
 e.preventDefault();
 mydata = $("#loginForm").serialize();
 //Your check here
 if(mydata == '0')
 { 
      $("#loginErr").show();
      return false;
 }

 $.ajax({
   type: "POST",
   url: url,
   data: mydata,
   success: function(response)
   {
        //this is your post response processor
   }
 });
 return false;
 });

答案 2 :(得分:0)

由于我想刷新页面,我确实想要同步请求。设置async false解决了这个问题。我可以在Ajax对象之外获取ret值,因为它是同步请求的。

$("#loginForm").submit(function() {
var url = <url>;
var ret = false;
$.ajax({
       async: false,
       type: "POST",
       url: url,
       data: $("#loginForm").serialize(), // serializes the form's elements.
       success: function(data)
       {
           //alert(data); // show response from the php script.
            if(data == '1')
                    ret = true;
            else if(data == '0')
                    $("#loginErr").show();
       }
     });
     return ret;
});