2017-03-08 118 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時以外。

相關問題