Jquery 如何使用AjaxPrefilter?
你能给我解释一下jQuery中AJAX预过滤的最简单方法吗?对不起,我是一个使用AJAX的新手 是否用于在服务器中自定义请求?谢谢Jquery 如何使用AjaxPrefilter?,jquery,ajax,Jquery,Ajax,你能给我解释一下jQuery中AJAX预过滤的最简单方法吗?对不起,我是一个使用AJAX的新手 是否用于在服务器中自定义请求?谢谢 我指的是这一点,但仍然无法理解。阅读文档,此功能基本上用于在发送数据之前更改发送到服务器的数据 我特别使用的一个例子是 $.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = $.param($.extend(originalOptions.data||{}, {
我指的是这一点,但仍然无法理解。阅读文档,此功能基本上用于在发送数据之前更改发送到服务器的数据 我特别使用的一个例子是
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
options.data = $.param($.extend(originalOptions.data||{}, {
timeStamp: new Date().getTime()
}));
});
它获取要通过发送的原始数据,并添加另一个带有时间戳的参数。这有助于解决iOS在缓存post请求时遇到的问题,而不必为每个请求添加时间戳。
$。ajaxPrefilter用于在ajax请求启动之前更改它们。这些是根据应用要求使用的。
像
在每个请求中附加用户会话id作为标头以验证用户
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
jqXHR.setRequestHeader("APP-SECURE-TOKEN","abc1234dfg5678");
}
它将头附加到所有请求,以验证用户。如果没有令牌,可以中止请求并将其重定向到登录页面
在每个请求之前添加版本命名空间
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
params.url = "/v1/"+params.url;
}
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
if(params.crossDomain)
{
jqXHR.abort();
}
}
在以后的版本中,升级名称空间变得很容易,我们不需要在发出ajax请求的每个地方搜索和修改名称空间
取消请求相同资源的请求
var requests = {};
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
if(requests[params.url])
{
requests[params.url].abort();
}
requests[params.url] = jqXHR;
}
如果正在下载文件,则可以中止该文件并从开始下载。否则,可能会引发文件正在下载的警报
阻止跨域请求
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
params.url = "/v1/"+params.url;
}
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
if(params.crossDomain)
{
jqXHR.abort();
}
}