Javascript 将错误消息传递给Deferred.reject()时未拒绝承诺
我有一个JavaScript函数,它有一个异步调用来验证表单上选定的选项。当我向reject()调用传递消息时,它实际上并不拒绝承诺。当我删除message参数时,它会按预期工作Javascript 将错误消息传递给Deferred.reject()时未拒绝承诺,javascript,jquery,asynchronous,promise,Javascript,Jquery,Asynchronous,Promise,我有一个JavaScript函数,它有一个异步调用来验证表单上选定的选项。当我向reject()调用传递消息时,它实际上并不拒绝承诺。当我删除message参数时,它会按预期工作 function myValidationCallback(statusId) { var d = $.Deferred(); $.ajax({ url: "/ServersideValidationCall?statusId=" + statusId, method:
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();
}
从和验证示例中,它看起来像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));
}
});
仅供参考,您不需要手动创建延迟对象。jQuery的
$.ajax()
为您创建了一个函数。您可以演示如何使用验证回调
函数吗?您如何验证d.reject(res.Message)
是否不起作用?已更新以显示承诺返回的内容。该验证库似乎存在问题。你试过查看他们的问题列表吗?您的代码看起来与他们的代码相同。唯一需要检查的是,res.Message
是您希望它记住的,res.Message
不一定存在。这取决于ServersideValidationCall()
返回给客户端的内容。仅供参考,您不需要手动创建延迟对象。jQuery的$.ajax()
为您创建了一个函数。您可以演示如何使用验证回调
函数吗?您如何验证d.reject(res.Message)
是否不起作用?已更新以显示承诺返回的内容。该验证库似乎存在问题。你试过查看他们的问题列表吗?您的代码看起来与他们的代码相同。唯一需要检查的是,res.Message
是您希望它记住的,res.Message
不一定存在。这取决于ServersideValidationCall()
向客户端返回的内容。