为什么在_jax请求中将"_ = 1389258551926"作为查询字符串参数发送?

Ank*_*mba 14 javascript ajax jquery

我正在使用JQuery Ajax向我的动作类发送请求,data: {campaignId: campaignId}_=1389258551926也作为数据发送.

我的ajax请求功能是:

$('#submit').click(function() {
    var campaignId = $('#campaign').val();
    alert("Ajax request ; Camp : " + campaignId);
    $.ajax({
        type: "get",
        url: "getCampData",
        data: {campaignId: campaignId},
        dataType: "json"
    }).done(function(data) {
        alert("Camp List : " + data.campList);
});
Run Code Online (Sandbox Code Playgroud)

查询字符串参数:

campaignId=Test&_=1389258551927
Run Code Online (Sandbox Code Playgroud)

为什么这个额外参数作为数据发送?

Den*_*ret 14

此参数是时间戳.你可以看到它与控制台中的内容完全相同

Date.now()
Run Code Online (Sandbox Code Playgroud)

这样做是为了确保URL更改并避免接收页面的缓存版本.

它在文档中描述:

cache(默认值:true,false,对于dataType'script'和'jsonp')

类型:Boolean如果设置为false,它将强制浏览器不缓存请求的页面.注意:将缓存设置为false只能与HEAD和GET请求一起正常工作.它的工作原理是将"_ = {timestamp}"附加到GET参数.其他类型的请求不需要该参数,但在IE8中,对已经由GET请求的URL进行POST时除外.

  • 在其他地方可能会调用[ajaxsetup](http://api.jquery.com/jquery.ajaxsetup/). (5认同)
  • 是的但为什么时间戳被添加了?他没有提到缓存:false (2认同)