如果下面的ajax腳本不返回1,我試圖返回true整個validator.registercallback函數。但是,它不工作,我認爲它可能是一些基本的東西我錯過了,但我無法弄清楚。阿賈克斯不會讓我返回true或false
validator.registerCallback('unique_username', function(value) {
//use ajax to run the check
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(xmlhttp.responseText != 1) {
alert('Username Exists');
return false;
} else {
alert('Username Available!');
return true;
}
}
}
xmlhttp.open("GET","uniqueuser.php?username="+value,true);
xmlhttp.send();
})
有什麼奇怪的是,以下的作品,它只是沒有根據的AJAX腳本的值工作:
validator.registerCallback('unique_username', function(value) {
//use ajax to run the check
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(xmlhttp.responseText != 1) {
alert('Username Exists');
return false;
} else {
alert('Username Available!');
return true;
}
}
}
xmlhttp.open("GET","uniqueuser.php?username="+value,true);
xmlhttp.send();
return true;
})
所以基本上,我可以告訴它在主返回true函數,但是當我嘗試使它返回true時,如果ajax腳本中的值不返回1,則不起作用。順便說一下,警報工作。所以它獲得了正確的價值,但它不會返回真實的或者錯誤的。
任何幫助表示讚賞!
更新
validator.registerCallback('unique_username', function(value) {
//use ajax to run the check
function ajax_result() {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("GET","uniqueuser.php?username="+value,true);
xmlhttp.send();
}
if(ajax_result() != 1) {
alert('Username Exists');
return false;
} else {
alert('Username Available!');
return true;
}
})
搜索「AJAX返回值的」 *異步*位是特別重要的..也,考慮使用AJAX庫(沒有,我不在乎哪一個,但自*你標記爲jQuery * ..) – 2013-03-28 23:38:04
http://stackoverflow.com/questions/5316697/jquery-return-data-after-ajax-call-success - jQuery,但應該顯示點(以及如何編寫更乾淨的代碼),如果你想*同步*行爲(ick!)請參閱http://stackoverflow.com/questions/2942544/synchronous-calls-with-jquery – 2013-03-28 23:40:42
我試過使用jquery版本,但它沒有工作要麼 – user1751581