我正在尝试离线我的应用程序。我发了几个GET
请求将模块加载到应用程序中。我已将这些文件添加到缓存清单中,因此请求仍然有效。
function loadReportDiv(ajaxUrl) {
$.ajax({
type : "GET",
cache: true,
url : ajaxUrl,
success : function(data) {
console.log("REPORTS: " + ajaxUrl + "... load complete");
$("#reports_menu_wrapper").after(data);
},
error : function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
}
loadReportDiv("sales_reports.html");
loadReportDiv("call_reports.html");
我在Chrome中运行应用并将网络设置为"离线"在我的设备模拟器中(模拟iPad)。我用ajax加载的文件有自己的javascript文件,这些文件在.html文件中引用。当我尝试加载sales_reports.html
和call_reports.html
时,Chrome无法加载文件并吐出它尝试获取的网址,即:js/call_reports.js?_=1415997141636
。
附加?_=[timestamp]
到文件路径,正在破坏我的应用程序,我似乎无法阻止它发生。如您所见,我将我的ajax请求的缓存模式设置为true,以防止此行为。
我使用的jQuery版本是1.11.1。
我尝试用vanilla javascript编写ajax请求并遇到同样的问题。
function loadReportDiv(ajaxUrl) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
console.log("REPORTS: " + ajaxUrl + "... load complete");
$("#reports_menu_wrapper").after(xmlhttp.responseText);
}
}
xmlhttp.open("GET", ajaxUrl);
xmlhttp.send();
}
我的jQuery文件第9631行引发了错误: //发送请求 //这可能引发一个实际的异常 //在jQuery.ajax中处理(所以没有在这里试试/ catch) xhr.send((options.hasContent&& options.data)|| null);
但它仍然将时间戳附加到请求网址。
再一次,任何帮助将不胜感激!感谢。
答案 0 :(得分:0)
我终于明白了!
我的应用程序中有一堆.js库,我想其中一个方法就是强制ajax请求不被缓存。我已将此添加到我的index.html
文件中以反击该行为。
<script>
$(function(){
$.ajaxSetup({
cache: true
});
});
</script>
现在一切正常!