如何使用AjaxPrefilter?

时间:2015-07-09 02:32:03

标签: jquery ajax

您能否向我解释一下jQuery中AJAX预过滤如何工作的最简单方法?对不起,我是使用AJAX的新手。

是否用于自定义服务器中的请求?感谢。

我指的是这个site,但仍然无法得到它。

2 个答案:

答案 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请求之前对其进行更改。根据应用要求使用它们。 喜欢,

  1. 在每个请求中将用户会话ID附加为用于验证用户身份的标头。

    $.ajaxPrefilter(function (params, originalOptions, jqXHR) 
    {
        jqXHR.setRequestHeader("APP-SECURE-TOKEN","abc1234dfg5678");
    }
    

    它将标头附加到所有请求,以验证用户。如果没有令牌,则可以中止请求并将其重定向到登录页面。

  2. 在每个请求之前添加一个版本名称空间。

    $.ajaxPrefilter(function (params, originalOptions, jqXHR) 
    {
        params.url = "/v1/"+params.url;
    }
    

    在以后的版本中可以轻松升级名称空间,因为我们不需要在每个发出Ajax请求的地方进行搜索和修改。

  3. 取消请求相同资源的请求。

    var requests = {};
    $.ajaxPrefilter(function (params, originalOptions, jqXHR) 
    {
        if(requests[params.url])
        {
            requests[params.url].abort();
        }
        requests[params.url] = jqXHR;
    }
    

    如果正在下载文件,则可以中止该文件并从头开始下载。否则,可能会引发有关文件正在下载的警报。

  4. 阻止跨域请求。

    $.ajaxPrefilter(function (params, originalOptions, jqXHR) 
    {
        if(params.crossDomain)
        {
            jqXHR.abort();
        }
    }