2014-01-09 64 views
9

我正在使用JQuery Ajax向data: {campaignId: campaignId}发送请求到我的操作类,但_=1389258551926也作为数据发送。为什么“_ = 1389258551926”作为查询字符串参数在ajax请求上发送?

我的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); 
}); 

查询字符串参数:

campaignId=Test&_=1389258551927 

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

+2

这是“缓存破坏”;见http://stackoverflow.com/questions/3687729/who-add-single-underscore-query-parameter,http://stackoverflow.com/questions/9657604/preventing-jquery-from-cache-busting-resources-loaded -during-ajax-callbacks- – user2864740

+0

我敢打赌,你是在'Thu Jan 09 2014 03:09:11(-6)'发送的。它发送时间戳,以便浏览器从服务器而不是从浏览器的缓存中请求文件。 –

回答

8

此参数是一个时间戳。你可以看到它的奇怪的是一样你会在控制台中看到与

Date.now() 

这样做是为了确保网址的变化,避免接收网页的缓存版本的内容。

它在the documentation描述:

缓存(默认值:true,false为的dataType '脚本' 和 'JSONP')

类型:Boolean如果设置为false,这将迫使请求的页面不由浏览器缓存为 。注意:将缓存设置为false只能正确使用HEAD和GET请求 。它通过在GET参数中追加 “_ = {timestamp}”来工作。 其他类型的请求不需要此参数,IE8中除POST之外已由GET请求的URL为 。

+2

是的,但为什么添加时间戳?他并没有提到缓存:false –

+0

@Jazzepi缓存:true不添加后缀 –

+4

可能会在其他地方调用[ajaxsetup](http://api.jquery.com/jquery.ajaxsetup/)。 –

相关问题