我的$ .post查詢有問題。這裏是我的代碼:
function verif_subscribe_sale() {
var URL_ROOT = "http://my_website.com/";
var email_sale = document.getElementById('email-sale');
var name_sale = document.getElementById('name-sale');
var url_sale = document.getElementById('url-sale');
var password_sale = document.getElementById('password-sale');
var token = document.getElementsByName('_token');
test = 0;
$.post(URL_ROOT + 'check-url', { url: url_sale.value, token: token.value }).done(function(data) {
if(data == "notok" || data.length < 4){
document.getElementById('error_url').style.display="block";
test = 1;
}
});
if(name_sale.value.length < 4){
document.getElementById('error_name_length').style.display="block";
test = 1;
}
if(check_email(email_sale) != true) {
document.getElementById('error_mail').style.display="block";
test = 1;
}
if(test == 0){
return true;
}else{
return false;
}}
此代碼是從HTML窗體調用:
<form action="{{{ URL::to('create_my_sale') }}}" method="post" onsubmit="return verif_subscribe_sale();">
的問題是,作爲後是異步的,形式可以即使迴歸後不會submited滿足條件。 是否有可能在提交表單之前等待帖子循環結束?我嘗試了一些計算器解決方案(如回調),但它不工作...
編輯部分:
我想這種方式在JS:
function verif_subscribe_sale(callback) {
var URL_ROOT = "http://www.mysite.com/";
var url_sale = document.getElementById('url-sale');
var token = document.getElementsByName('_token');
test = 0;
$.post(URL_ROOT + 'check-url', { url: url_sale.value, token: token.value } ).done(function(data) {
if(data == "notok" || data.length < 4){
document.getElementById('error_url').style.display="block";
test = 1;
}
});
callback(test);
}
function test_callback(test){
var name_sale = document.getElementById('name-sale');
var email_sale = document.getElementById('email-sale');
var password_sale = document.getElementById('password-sale');
if(name_sale.value.length < 4){
document.getElementById('error_name_length').style.display="block";
test = 1;
}
if(check_email(email_sale) != true) {
document.getElementById('error_mail').style.display="block";
test = 1;
}
if(test == 0){
return true;
}else{
return false;
}
}
和我把它稱爲這樣的:
<form action="{{{ URL::to('create_my_sale') }}}" id="form-sale" method="post" onsubmit="return verif_subscribe_sale(test_callback);">
但它不工作太...
回調確實有效,它們是您擁有異步代碼的唯一實用解決方案。你的函數將不起作用,因爲你的驗證在AJAX調用返回之前執行。您可能需要重構您的代碼才能完成此工作,但這不僅僅影響您在此處的功能。 – 2014-01-29 10:45:58
回調是解決這個問題的方法。這是唯一的解決方案。如果它不適合你,那麼你需要告訴我們你的回調代碼並尋求幫助解決它;您向我們展示的代碼在沒有變成回調的情況下永遠不會起作用,因爲帖子的性質是異步的。 – Spudley
感謝您的回答。我不是JavaScript的專家這不是我的代碼,我不知道如何重構它... –