2017-03-08 143 views
0

我有一个窗体上,我做一个web服务的POST。表单的提交按钮后面我有这样的jQuery代码:AJAX发布后只工作第二次

$("#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的帖子?

--edit

我删除了阿贾克斯后,它取代为PHP后

+0

试过[this](http://stackoverflow.com/a/39606996/3282633)一个? –

+0

@SulthanAllaudeen好吧我会尝试这一个,我可以让这个-1或0: YdB

+0

你甚至可以在帖子上添加东西请求像'?random = 123456789' –

回答

0

,如果你是指,以确保他们看到的代码的最新版本上传,你应该只添加一个版本变量到您想要浏览器重新加载的文件。任何时候你更新,你可以增加版本变量。 比如:“版本= 2.3”,通过改变版本号的值

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js?version=2.3"></script> 

,请求将不会从缓存中,下一次拉升。但它会一直到你再次改变它,这样你才能获得缓存的好处,这可以大大加快你的Web应用程序的速度。 对于CSS,html或任何其他静态内容也可以做同样的事情。

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 '脚本' 和 'JSONP')

如果设置为false,这将迫使请求的页面不被浏览器缓存。注意:将缓存设置为false只能在HEAD和GET请求中正常工作。它通过在GET参数中附加“_ = {timestamp}”来工作。其他类型的请求不需要该参数,除了在IE8中对POST已经请求的URL进行POST时以外。