我有一個註冊表單,用於檢查用戶名是否已存在並顯示BS警報。檢查此功能的功能使用Ajax。我早期問題的答案讓我改進了我的代碼,以在我的Ajax函數中使用回調。所以,現在我有以下代碼:虛假值被忽略
HTML:
onchange="callAjax('gebruikersnaam', document.getElementById('gebruikersnaam').value, checkBestaandeGebruikersnaam)"
JavaScript的主要功能:
function callAjax(arg1, arg2, callback){
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if(request.readyState === 4 && request.status === 200) {
callback(request.responseText);
} else {
document.getElementById("message").innerHTML = 'An error occurred during your request: ' + request.status + ' ' + request.statusText;
}
}
request.open("POST", "core/functions/checkBestaandeGebruikersnaam.php", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(arg1+"="+arg2);
}
JavaScript回調函數:
function checkBestaandeGebruikersnaam(result) {
if(result == "1") {
document.getElementById("message").innerHTML = '<div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a><strong>Let op!</strong> Die gebruikersnaam is al bezet, kies een andere gebruikersnaam.</div>';
return false;
}
else {
document.getElementById("message").innerHTML = '';
}
}
現在我有一個通用的Ajax請求我可以通過給它提供不同的參數來重新使用它。所以謝謝你。有人可以確認我是否正確使用回調功能?
現在,我真正想要的是在提交表單時重新使用函數checkBestaandeGebruikersnaam()
。我有以下代碼:
HTML:
<form action="register.php" onsubmit="return validate()" name="registerForm" method="post" class="col-md-10 col-md-offset-1 col-xs-12 col-xs-offset-0">
的JavaScript:
function validate() {
var errMsgHolder = document.getElementById("message");
if(checkPassword() === false) {
errMsgHolder.innerHTML =
'<div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a><strong>Let op!</strong> Kies een wachtwoord van minimaal 3 en maximaal 30 tekens.</div>';
return false;
} else if(checkPasswordsMatch() === false){
errMsgHolder.innerHTML =
'<div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a><strong>Let op!</strong> Wachtwoorden komen niet overeen.</div>';
return false;
} else if(checkBestaandeGebruikersnaam() === false){
errMsgHolder.innerHTML =
'<div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a><strong>Let op!</strong> Die gebruikersnaam is al bezet, kies een andere gebruikersnaam.</div>';
return false;
}
功能checkPassword()
和checkPasswordsMatch()
不使用Ajax和他們的工作職能validate()
內如預期。但是,當我測試功能validate()
它不起作用。它會忽略false
值並提交表單。我認爲使用回調函數應該可以解決這個問題,但顯然我仍然在做錯事。請賜教,謝謝你的時間。
閱讀此開始:http://www.sitepoint.com/javascript-truthy-falsy/;) –