Вы можете вернуть значение, если вызов синхронный. Вот вам пример:
Решение для синхронного режима:
function doesUsernameExist(element)
{
// Check via AJAX (POST) if username already exists in the database
var funcReturned = null;
$.ajaxSetup({async: false});
$.post(
'_ajax_checkexist.php',
{
var: 'username',
value: element.value
},
function(data) {
funcReturned = (data.toLowerCase() == 'exists');
},
'data'
);
$.ajaxSetup({async: true});
return funcReturned;
}
Проблема с вашим кодом в том, что во время выполнения $.post
функция продолжает выполнение (асинхронно), поэтому вернет null
до того, как ваш $.post
закончится.
Решение для асинхронного режима:
Используя асинхронный вызов, вы не можете вернуть значение, но можете вызвать обратные вызовы или выполнить код только там. Это может быть асинхронное решение:
function doesUsernameExist(element)
{
var funcReturned = null;
$.post( //This post is asynchronous
'_ajax_checkexist.php',
{
var: 'username',
value: element.value
},
function(data) {
funcReturned = (data.toLowerCase() == 'exists');
userExistanceCallback(funcReturned);
},
'data'
);
//We don't return anything
}
function userExistanceCallback(funcReturned){
if(funcReturned == true)
alert("User exists!!");
else
alert("User does not exist!!");
}
Надеюсь, это поможет. Приветствия