2013-06-27 142 views
0

我想使用ajax提交我的表單。jquery表單提交使用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,但不論數據的價值,形式沒有得到提交。它總是獲得返回值false。我已經檢查過,如果條件達到了其他條件,但執行不會在返回時停止。

如何提交我的表單?我想刷新我的頁面。

+5

AJAX異步是順便說一句,你不能從成功回調函數返回 –

+0

值你的**網址**變量是你真正的代碼的實際網址,是否正確? – pmandell

+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 
}); 
+0

我試過了,但我的頁面沒有刷新。 –

+0

檢查條件是否符合(數據=='1') –

+0

是的。條件符合。 –

0

我不知道你想檢查哪些數據。但是如果這些數據來自表單本身,那麼你需要在ajax調用之前檢查它。一旦你完成了ajax的通話,你的表格已經提交。

$("#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; 
}); 
0

因爲我想刷新我的頁面,我確實想要同步請求。設置異步錯誤解決了這個問題。我可以在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; 
});