我在 Internet 上找到了如何在必要时取消执行 ajax 请求。现在,如果表单字段为空并且没有传递任何内容,我需要取消它。这是我的代码:
$('#btnConfirm').on('click', function () {
if ($('#pass').css('display') == 'none') {
AjaxPassRecovery("/Authorization/FindUserAccount", Success)
}
});
function AjaxPassRecovery(url, callback) {
var xhr = $.ajax({
beforeSend: function () {
var mail = $('#txtMail').val();
if (mail === '')
xhr.abort();
},
type: "POST",
url: url,
data: {
"Email": $('#txtMail').val()
},
success: function (result) {
callback(result);
},
error: function (xhr) {
swal({
title: xhr.responseText,
type: "warning"
});
}
});
}
function Success(result) {
if (result > 0) {
$('#txtMail').attr('readonly', 'readonly');
$('#pass').slideDown();
}
}
我将带有 ajax 请求的函数的执行绑定到按钮,并使用回调在其中调用成功函数。这就是我在示例中的 xhr 变量中找到 ajax 请求的方式。并且在发送ajax请求之前,我检查该字段是否为空,然后取消请求。但是会抛出一个错误。
我认为这是范围问题并在此页面上全局声明了 xhr 变量,但错误是相同的。怎么了?我究竟做错了什么?我在互联网上看到的例子看起来差不多。
错误是在调用函数的那一刻
beforeSend
xhr = undefined
,因此,与其取消请求,不如根本不发送它。