Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery firefox向外部javascript文件添加querystring参数_Jquery - Fatal编程技术网

Jquery firefox向外部javascript文件添加querystring参数

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…防止

在页面加载方面,我正在通过jQueryAjax加载一个html页面。此html页面包含一个视图,并在站点布局的main Content div中呈现。 加载的示例视图html:

<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次未缓存的脚本