У меня есть специальный валидатор, чтобы проверить, является ли введенный номер уникальным или нет. Если номер не является уникальным, он должен возвращать значение false.Оператор возврата вызывается перед вызовом ajax
Javascript код выглядит так:
function ValidatePAuthNo(sender, args) {
//args.IsValid = true;
var PAuthNo = $('[id$=tbPriorAuthNumber]').val();
$.ajax({
type: "POST",
url: "MedicaidPriorAuth.aspx/IsPAuthUnique",
data: JSON.stringify({ pAuthNo: PAuthNo }),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
error: function (response) {
alert(" An error occurred." + response.error);
},
success: function (data) {
if (data.d == false) {
//alert("P. Auth# already exists! Please enter new P. Auth #.");
$("[id$=lblError]").val("P. Auth# already exists! Please enter new P. Auth #.");
args.isValid = false;
} else {
$("[id$=lblError]").val("");
args.isValid = true;
}
}
});
return args.IsValid;
}
Мой веб-метод возвращает правильное значение, однако, проблема заключается в том, что возвращение args.IsValid вызывается перед методом AJAX. Я здесь что-то не так? Если мой подход ошибочен, какой может быть правильный подход для этого с клиентской стороны?
Рекомендуемая литература - [? Как вернуть ответ от асинхронного вызова] (http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call) – neilsimp1
Это не имеет никакого отношения к asp.net, это ajax, а ajax означает асинхронный JavaScript и XML, поэтому ajax-вызовы по умолчанию (если вы не задаете параметр async: false) являются несинхронными, ваша функция вернется, прежде чем вы получите ответ от сервера. передать функцию обратного вызова для выполнения после ответа сервера. просмотрите свой код – lyz