Похоже, вы хотите, чтобы запрос был синхронным. Чтобы это произошло, вам нужно установить опцию async в запросе на false. По умолчанию запрос должен быть асинхронным, чтобы вы возвращались из вызова ajax до завершения запроса. В качестве альтернативы, вы можете переписать код так, чтобы обратный вызов успеха действительно выполнял свою работу. Последнее более идиоматично для AJAX - но иногда может быть более сложным.
$.ajax(
{
type: "POST",
async: false, // <- note addition
url: "/Account/EmailExist",
data: { 'email': emailval },
success: function(result) {
if (result.indb) {
isvalid = true;
}
},
error: function(error) {
alert(error);
}
});
OR
$("input[type=submit]").click(function() {
// email - check required and valid
var form = $(this).parent('form');
var email = $("input[name='email']");
var emailtrim = jQuery.trim(email.val());
SubmitIfNoEmailExists(form,emailtrim);
return false;
});
function SubmitIfNoEmailExists(form,emailval) {
// hit db
$.ajax({
type: "POST",
url: "/Account/EmailExist",
data: { 'email': emailval },
success: function(result) {
if (!result.indb) {
form.submit();
}
},
error: function(error) {
alert(error);
}
});
}
РЕДАКТИРОВАТЬ : Исходя из ваших комментариев, вы также можете использовать плагин проверки jQuery в качестве решения всех ваших задач проверки.