这不是重复的;以下提供的答案与建议的重复答案中的评论相同。
从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(),例如这样的调用:
fetch('/MyDomain/MyControllerAction')
.then(function (data) {
if(data.ok){
return data.json();
}
})
.then(function (data) {
doSomething(data)
})
.catch(function (error) {
doSomethingElseAgain(error);
});
答案 0 :(得分:3)
从this answer,onEdit()
检查由IsAjaxRequest
设置的特定HTTP标头。要使$.ajax
返回IsAjaxRequest
为真,请在发出请求时设置此标头,如下所示:
fetch
有关fetch('/MyDomain/MyControllerAction', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
选项的完整列表,请参见MDN。