我有一个表单,我在其上对Web服务进行POST。在表单的提交按钮后面我有这个jquery代码:
$("#msform").submit(function (e) {
$.ajax({
url:'https://example',
type:'POST',
data:formData1,
crossDomain: true,
dataType: 'json',
jsonpCallback: 'callback',
success: function(data) {
console.log(data);
}
});
});
现在这段代码已经运行了,但是当我改变了我的缓存控制时,它似乎无法工作..
在我的html中,我有用于缓存控制的代码:
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="-1" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
我添加了此缓存控件,因为我希望用户每次上传时都能在网站上看到新的更改。在过去,他们需要单击CTRL + F5以查看新更改或使用新的JavaScript。
在过去,当AJAX工作时,我有这一行:我改为:
现在,当用户提交表单时,将不会收到帖子。但是,如果用户返回到表单页面并再次提交数据,则会收到帖子。
有没有办法不保存缓存但继续执行AJAX帖子?
- 修改
我删除了ajax帖子并将其替换为php帖子
答案 0 :(得分:0)
如果您指的是确保他们看到您上传的最新版代码,则只需将版本变量添加到您希望浏览器重新加载的文件中。任何时候更新,你只需增加版本变量。 例如:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js?version=2.3"></script>
通过更改版本号“?version = 2.3”的值,下次不会从缓存中提取请求。但是直到你再次更改它,所以你将获得缓存的好处,这可以大大加快你的web应用程序。 对于css,html或任何其他静态内容也可以这样做。
答案 1 :(得分:0)
您的dataType可能还需要dataType: 'jsonp'
。但是向您添加cache: false
ajax选项可能有效:
$.ajax({
cache: false,
url:'https://example',
type:'POST',
data:formData1,
crossDomain: true,
dataType: 'json',
jsonpCallback: 'callback',
success: function(data) {
console.log(data);
}
});
缓存(默认值:true,false,对于dataType'script'和'jsonp')
如果设置为false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为false只能与HEAD和GET请求一起正常工作。它的工作原理是将“_ = {timestamp}”附加到GET参数。其他类型的请求不需要该参数,但在IE8中,当对已经由GET请求的URL进行POST时,该参数除外。