Jquery firefox向外部javascript文件添加querystring参数
在页面加载方面,我正在通过jQueryAjax加载一个html页面。此html页面包含一个视图,并在站点布局的main Content div中呈现。 加载的示例视图html:Jquery firefox向外部javascript文件添加querystring参数,jquery,Jquery,在页面加载方面,我正在通过jQueryAjax加载一个html页面。此html页面包含一个视图,并在站点布局的main Content div中呈现。 加载的示例视图html: <div>hello world</div> <script src="/javascript.js" type="text/javascript"></script> 问题是Firefox通过添加一个唯一的querystring参数来加载javascript.js…防止
<div>hello world</div>
<script src="/javascript.js" type="text/javascript"></script>
问题是Firefox通过添加一个唯一的querystring参数来加载javascript.js…防止它被缓存
Firebug显示:
得到
这仅适用于视图中动态加载的javascript。站点布局中的javascripts加载和缓存很好。Firebug显示jQueryAjax返回的是普通视图,没有querystring参数,因此添加它的是firefox
如何解决这个问题?Load是.ajax的缩写。改为使用此选项并将缓存设置为false
$.ajax({
url: '/templates/' + template_name ,
success: function(data) {
$('.main_content').html(data)
},
cache: false
});
Load是.ajax的缩写。改为使用此选项并将缓存设置为false
$.ajax({
url: '/templates/' + template_name ,
success: function(data) {
$('.main_content').html(data)
},
cache: false
});
它不是firefox,不是jquery和ajax调用。使用POST和not get或 来自jQuery 缓存布尔 默认值:数据类型“script”和“jsonp”为true、false 如果设置为false,它将强制浏览器不缓存请求的页面。将cache设置为false还会向URL追加一个查询字符串参数=[TIMESTAMP]
我的建议发布后,你的问题就会消失。不是firefox,不是jquery和ajax调用。使用POST和not get或 来自jQuery 缓存布尔 默认值:数据类型“script”和“jsonp”为true、false 如果设置为false,它将强制浏览器不缓存请求的页面。将cache设置为false还会向URL追加一个查询字符串参数=[TIMESTAMP]
我的建议发布后,您的问题就会消失。请确保将缓存选项设置为true
jQuery.ajax({
url: "test.html",
cache: true
})
jQuery默认缓存为true,除非数据类型为“script”或“jsonp”。
在您的情况下,数据类型似乎是“script”,这就是它不缓存结果的原因。确保将缓存选项设置为true
jQuery.ajax({
url: "test.html",
cache: true
})
jQuery默认缓存为true,除非数据类型为“script”或“jsonp”。
在您的情况下,数据类型似乎是“script”,这就是它不缓存结果的原因。jQuery默认情况下将附加该脚本的唯一查询,并且由于请求是在内部发生的,因此无法直接禁用它 这将从这些请求中删除“\u1”查询字符串
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
if (settings.dataType === 'script') {
settings.url = settings.url.replace(/\??&?_=[0-9]+/, '');
}
}
})
默认情况下,jQuery将为脚本追加唯一的查询,由于请求是在内部进行的,因此不能直接禁用它 这将从这些请求中删除“\u1”查询字符串
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
if (settings.dataType === 'script') {
settings.url = settings.url.replace(/\??&?_=[0-9]+/, '');
}
}
})
确实为ajax调用正确设置了缓存选项?$'.main_content.load'/templates/'+template_name+'.html',函数{if pushState window.history.pushState,url;if f!=null{f;};这就是我要做的,返回的数据显示javascript没有querystring参数。因此是firefox添加了它。实际上,加载完成后,我刚刚做了一个alertmain_content.html…脚本丢失了…jquery似乎正在剥离它并通过getscript调用加载它。是否确实为ajax调用正确设置了缓存选项?$'.main_content.load'/templates/'+template_name+'.html',函数{if pushState window.history.pushState,url;if f!=null{f;}};这就是我正在做的,返回的数据显示javascript没有querystring参数。因此,添加它的是firefox。实际上,我只是在加载完成后做了一个alertmain_content.html…脚本丢失了…jquery似乎正在剥离它并通过getscript调用加载它。最后添加的查询字符串是添加的内容以确保它被缓存。如果您不想查询添加的字符串,那么缓存应该设置为false。我尝试过,它不起作用。html页面本身被缓存304…但是html页面中的内容被jquery剥离,并使用getscript执行,getscript是一个200次未缓存的查询字符串,在末尾添加的查询字符串是wh添加at以确保它被缓存。如果您不想查询添加的字符串,则应将缓存设置为false。我尝试了它,但它不起作用。html页面本身被缓存304…但html页面中的内容被jquery剥离,并使用getscript执行,getscript是一个200次未缓存的脚本