我目前正在使用MVC5构建网站,我需要在发出ajax请求时提供不同的内容。
通常我们使用jQuery并使用$.ajax
发出ajax请求,但最近我们已经转向使用fetch api。但是,使用fetch api的请求不会将MVC注册为ajax请求,因此使用了错误的模板。
我已经考虑过制作自己的ajax请求扩展但不确定要检查的标头:
public static bool IsAjaxOrFetchRequest(this HttpRequestBase request)
{
if (request != null && request.Headers != null)
{
if (request.Headers["Custom-Fetch-Header"] != null)
{
return true;
}
}
return request.IsAjaxRequest();
}
是否有一个标头,fetch会发送所有请求,例如Request.Headers["X-Requested-With"] == "XMLHttpRequest"
ajax发送?
单步执行代码,我无法看到任何突出的内容
答案 0 :(得分:2)
好好再深入研究一下,我似乎无法找到任何与请求一起发送的标准标题,因此我创建了自己的标题:
public static bool IsAjaxOrFetchRequest(this HttpRequestBase request)
{
if (request != null && request.Headers != null)
{
if (request.Headers["X-Is-Ajax-Request"] != null)
{
return bool.Parse(request.Headers["X-Is-Ajax-Request"]);
}
}
return request.IsAjaxRequest();
}
然后我可以用以下内容更新我的扩展程序:
function auth(id) {
return ((dispatch) => async1(10)
).then( (v) => dispatch(AddArtist(v))
).then( () =>
Promise.all([
async2(26),
async3(51),
])
).then( (v) => dispatch(AddArtist(v[0] + v[1]))
)
)
}