У меня есть JavaScript функция с асинхронным вызовом для проверки выбранного параметра в форме. Когда я передаю сообщение в вызов reject (), оно фактически не отклоняет обещание. Когда я удаляю параметр сообщения, он работает как положено.
function myValidationCallback(statusId) {
var d = $.Deferred();
$.ajax({
url: "/ServersideValidationCall?statusId=" + statusId,
method: "POST",
dataType: "json",
contentType: "application/json"
}).done(function (res) {
if(res.IsValid)
d.resolve()
else
d.reject(res.Message); // If res.Message is removed, the reject works.
}).fail(function (error) {
console.error("Server-side validation error", error);
d.reject("Cannot contact validation server");
});
return d.promise();
}
Из 1013 * отложенной документации и этого примера проверки, похоже deferred.reject может принимать сообщение в качестве аргумента.
Редактировать: функция обратного вызова проверки является правилом проверки в этом поле выбора DevExtreme:
$.ajax({
url: "/GetStatuses",
dataType: 'json',
cache: false,
success: function (data) {
$("#statusId").dxSelectBox().dxValidator({
validationRules: [{
type: "async",
validationCallback: function (params) {
return myValidationCallback(params.value)
}
}],
validationGroup: ValidationGroup
});
},
error: function (jqXHR, textStatus, errorThrown) {
givePersistentFeedback("detailsExceptionFeedback", "danger", getExceptionError(jqXHR));
}
});