2009-12-25 119 views
1

我有一個表單,在提交之前我想檢查一些針對數據庫的輸入。這個想法:1)提交表格,2)檢查值,3)顯示錯誤或實際提交表格。例如:提交表單後jQuery檢查問題

$(form).submit(function() { 
    $.post('check.php', { 
    values 
    }, function(res) { 
    // result I need before submitting form or showing an error 
    }); 

    return false; 
});

現在,它需要一些時間之前,我得到的結果(即不立即),所以我把在return false底部,防止形式之前,我得到了$ .post的結果反饋給提交併用它做一些事情。

問題:在我從$ .post得到結果後,事情都變好了,我該如何告訴腳本繼續提交表單?如果我使用submit(),它會把它帶回這個檢查腳本,創建一個無限循環。

任何想法?在此先感謝和聖誕快樂!

回答

1

你基本上提交表單的兩倍,如果你這樣做了。這似乎很浪費。相反,只是防止表單提交,並異步處理值(如你已經)。從服務器接收數據,如果不好的話拒絕。如果您已經將數據發送到服務器,則無需提交表單。這有點多餘。

+0

是的,好點。我想使用普通的帖子(不是異步的),因爲頁面需要在之後重新加載。但在這種情況發生之前我仍然需要反饋。但正如你所說,這是多餘的。我想我應該在沒有錯誤的情況下異步處理數據,然後從jQuery中重新加載頁面 - 儘管這從來不是我最喜歡做的事情。 – Alec 2009-12-26 00:12:55

+0

我明白你的困境,亞歷克。但刷新一個頁面似乎比發送同樣的數據兩次服務器更有意義:) – Sampson 2009-12-26 01:19:36

1

您可以使用布爾標誌是:

var isValid = false; 
$(form).submit(function() { 
    if (isValid) return true; 
    $.post('check.php', { 
    values 
    }, function(res) { 
    if (res.valid) { 
     isValid = true; 
     $(form).submit(); 
    } 
    // result I need before submitting form or showing an error 
    }); 

    return false; 
}); 
+0

沒有太多的安全在。 – Sampson 2009-12-25 23:47:52

1

嘗試使用具有onclick的鏈接替換提交按鈕。之後以編程方式提交表單。例如: -

<a id="submit">Submit</a>

$($("a#submit").click(function() { 
    $.post('check.php', { 
      values 
     }, function(res) { 
       // result I need before submitting form or showing an error 
     }); 
    if (condition) { 
    $('[name=form_name]').submit(); 
    }; 
});