答案 0 :(得分:2)
请阅读http://api.jquery.com/jquery.ajaxprefilter/处的文档。此功能主要用于更改在发送之前发送到服务器的数据。
我具体使用的一个例子是
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
options.data = $.param($.extend(originalOptions.data||{}, {
timeStamp: new Date().getTime()
}));
});
通过添加另一个带时间戳的参数来获取要发送的原始数据。这对于解决iOS缓存帖子请求的问题非常有用,而无需为每个单独的请求添加时间戳。
答案 1 :(得分:-1)
$.ajaxPrefilter
用于在启动ajax请求之前对其进行更改。根据应用要求使用它们。
喜欢,
在每个请求中将用户会话ID附加为用于验证用户身份的标头。
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
jqXHR.setRequestHeader("APP-SECURE-TOKEN","abc1234dfg5678");
}
它将标头附加到所有请求,以验证用户。如果没有令牌,则可以中止请求并将其重定向到登录页面。
在每个请求之前添加一个版本名称空间。
$.ajaxPrefilter(function (params, originalOptions, jqXHR)
{
params.url = "/v1/"+params.url;
}
在以后的版本中可以轻松升级名称空间,因为我们不需要在每个发出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)
{
if(params.crossDomain)
{
jqXHR.abort();
}
}