AJAX仅在第二次工作

时间:2017-03-08 11:57:00

标签: javascript jquery html ajax

我有一个表单,我在其上对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帖子

2 个答案:

答案 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时,该参数除外。