С сервера, как распознать вызов javascript fetch () (asp.net mvc) - PullRequest
0 голосов
/ 07 марта 2019

Это не совсем дубликат; ответ, приведенный ниже, идентичен комментарию в предложенном дублирующем ответе.

Внутри действия контроллера asp.net мне интересно знать, был ли вызов сделан вызовом javascript fetch (). Есть ли какая-либо часть объекта Request, которую я могу опрашивать, чтобы обнаружить это?

Например, если мне интересно узнать, является ли вызывающая сторона вызовом javascript $ .ajax, на стороне сервера я могу вызвать этот метод:

Request.IsAjaxRequest();

и если он возвращает true, я знаю, что вызов был примерно таким:

       $.ajax({
        url: '/MyDomain/MyControllerAction',
        type: 'GET',
        success: function (data) {
            doSomething(data);
        },
        error: function (XMLHttpRequest, ajaxOptions, ex) {
            doSomethingElse(XMLHttpRequest, ajaxOptions, ex);
    });

Есть ли что-то вроде Request.IsAjaxRequest (), который я могу вызвать или запросить, чтобы узнать, был ли вызывающий объект обработчиком JavaScript (), например, вызовом, подобным этому:

fetch('/MyDomain/MyControllerAction')
       .then(function (data) {
          if(data.ok){
            return data.json();
           }
        })
        .then(function (data) {
            doSomething(data)
        })
        .catch(function (error) {
            doSomethingElseAgain(error);
        });

1 Ответ

3 голосов
/ 07 марта 2019

С этот ответ , IsAjaxRequest проверяет определенный HTTP-заголовок, установленный $.ajax.Чтобы IsAjaxRequest вернул true для fetch, установите этот заголовок при отправке запроса, например:

fetch('/MyDomain/MyControllerAction', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })

См. MDN для полного списка fetch параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...