为什么有些数字被添加到ajax对象的url以及如何删除它们?

Ata*_*ani 29 ajax jquery query-string

我想下载文件以供进一步使用,这是我找到的最好的方法,但是当我看到由beforeSendEvent 创建的日志时,URL已被queryString修改为:

http://blabla.com/test.swf?_=1346484617818
Run Code Online (Sandbox Code Playgroud)

数字也是随机的.

我想知道为什么会这样!

var url = 'http://blabla.com/test.swf';

$(document).ready(function () {
           $.ajaxSetup({
             'beforeSend':function () {
                          console.log(this.url);}
           });

        $.ajax({
            url:url,
            dataType:"script",
            });
});
Run Code Online (Sandbox Code Playgroud)

rah*_*hul 44

只需使用cache:true.jQuery会自动为您的URL末尾添加一个时间戳,确保永远不会缓存ajax请求.

来自jquery docs

默认值: true,false表示dataType'script'和'jsonp'
如果设置为false,则会强制请求的页面不被浏览器缓存.设置缓存false还会将查询字符串参数" _=[TIMESTAMP]" 附加到URL.

$.ajaxSetup({'cache':true});
Run Code Online (Sandbox Code Playgroud)

Jquery Ajax Docs

  • 对于数据类型_script_和_jsonp_,jQuery使用`cache:false`作为默认值,并因此添加`_ = [TIMESTAMP]`来防止缓存.为了防止这种情况,你必须使用`cache:true`. (5认同)