在最近的項目中使用到了ajax來大量匯入更新資料,第一次提交正常,後面提交同樣的訂單就有問題了。訂單明明已經處理了,可是介面還是提示沒有處理。
尋找了下原因,原來是ajax的緩衝問題造成。
解決方案如下:
1、在服務端加 header("Cache-Control: no-cache, must-revalidate");(如php中)
2、在ajax發送請求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0");
3、在ajax發送請求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 參數後加上 "?fresh=" + Math.random(); //當然這裡參數 fresh 可以任意取了
5、第五種方法和第四種類似,在 URL 參數後加上 "?timestamp=" + new Date().getTime();
6、用POST替代GET:不推薦
在項目中使用第四種辦法解決:Math.random(),加上這個隨機參數後,系統正常了。
$.ajax({
type: "get",
async: false,
url: "../Handler/K3ImportDeliveryHandler.ashx?OrderId=" + text[i] + '&time=' + Math.random(),
beforeSend: function(XMLHttpRequest) {
$('#loading').show();
$('#txtLog').val($('#txtLog').val() + '【正在處理訂單' + text[i] + '...】\n');
},
success: function(data, textStatus) {
$('#txtLog').val($('#txtLog').val() + data + '\n');
},
complete: function(XMLHttpRequest, textStatus) {
$('#loading').hide('slow');
},
error: function() {
}
});