Путь выполнения скрипта при использовании AJAX не является линейным. Ваш IsUniqueEmail
завершится до того, как AJAX-запрос получит ответ, ничего не возвращая.
То, что вы возвращаете, отправляется на $.ajax
, который является методом, вызывающим success
, и там его, вероятно, игнорируют.
Вы можете переписать свой код следующим образом:
$(document).ready(function() {
$(".buttonStep1").click(function() {
IsUniqueEmail();
// never follow this link
return false;
});
});
Таким образом, нажатие кнопки просто запускает запрос - оно не выполняется и не выполняет никаких других действий. После этого вы делаете всю свою магию в ответе AJAX:
function IsUniqueEmail() {
var email = $("#<%=EmailAddress.ClientID%>").val();
if (email.length > 0) {
$.ajax({
url: 'handlers/validator.ashx',
dataType: 'json',
data: { "n": "email", "v": email },
async: false,
success: function(data) {
alert(eval(data.success));
if(eval(data.success)) {
// Execute code to continue after the click here
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
return true;
}
});
}
}