Отключить ajaxStart по конкретному запросу

У меня есть поле электронной почты, к которому прикреплен удаленный вызов проверки, чтобы проверить, существует ли введенный адрес электронной почты в системе. Как только пользователь вводит, вызывается метод контроллера, и он возвращает флаг.

У меня также есть глобальное событие ajaxStart, прикрепленное ко всем запросам ajax, которое показывает счетчик загрузки и блокирует страницу. Я хочу предотвратить выполнение ajaxStart этой конкретной функции. Насколько я могу судить, никакие объекты не передаются в событие ajaxStart, и я не уверен, как подавить его в этом конкретном запросе.

Это визуализированный html:

<input class = "form-control" data-val = "true" data-val-remote = "Email already exists" data-val-remote-additionalfields = "*.Email" data-val-remote-type = "POST" data-val-remote-url = "/account/emailexists" id = "Email" name = "Email" placeholder = "Business Email" type = "email" value = "" />

Вид модели:

public class RegisterViewModel
{
    [Remote("EmailExists", "Account", HttpMethod = "POST", ErrorMessage = "Email already exists")]
    public string Email { get; set; }
}

Контролер аккаунта:

[AllowAnonymous]
[HttpPost]
public JsonResult EmailExists(string Email)
{
   var exists = Email.UserExists();
   return Json(exists, JsonRequestBehavior.AllowGet);
}

Javascript:

$(function () {
    $(document).ajaxStart(function () {
         // Return if this is '/account/emailexists'
         blockUI();
    }).ajaxStop($.unblockUI);

    //...

Для всех других функций ajax я использую параметр global: false для подавления прослушивателя глобальных событий — не знаю, как это сделать с помощью Unobtrusive Javascript.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
373
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Узнав о .ajaxОтправить(), я решил попробовать его вместо .ajaxStart(). См. различия этих двух событий здесь:

В чем разница между: 1. (ajaxStart и ajaxSend) и 2. (ajaxStop и ajaxComplete)?

.ajaxSend() and .ajaxComplete() fire once per request as they send/complete. This is why these handlers are passed arguments and the global/batch ones are not:

Я использовал аргумент объекта ajax, чтобы узнать, является ли URL-адрес запроса удаленным вызовом проверки, чтобы подавить значок загрузки. Пока этот подход работает нормально.

$(document).ajaxSend(function(e, xhr, settings) {
    if (settings.url == '/account/emailexists') return;
    blockUI();
});

$(document).ajaxStop(function () { $.unblockUI(); });

Другие вопросы по теме