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

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

我的ajax请求function是:

 $('#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); }); 

查询字符串参数:

 campaignId=Test&_=1389258551927 

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

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

 Date.now() 

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

它在文档中描述:

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

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