開發(fā)「bufpay.com 個人即時到賬收款平臺」支付頁面需要用到 ajax 輪詢訂單的支付狀態(tài)。
現(xiàn)在瀏覽器對 ajax 的緩存策略遵循 http response header 里面的緩存設置,為了保證每次輪詢需要獲取最新的訂單信息,我們需要對 ajax 請求做一些修改。
如果你使用 jquery 可以直接在 document ready 的時候用
$.ajaxSetup({ cache: false });
來讓每個 ajax 請求都在后面添加時間戳。
bufpay.com 的支付頁面為了最快的加載速度,就沒有使用任何第三方庫(jquery 庫壓縮后都有大概100K),所以這里就手動在每個 ajax 請求里面添加時間戳,代碼如下:
//純 js 實現(xiàn) ajax 請求
var ajax = function(url, method, callback, params = null) {
var obj;
try {
obj = new XMLHttpRequest();
} catch(e){
try {
obj = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
obj = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
alert("Your browser does not support Ajax.");
return false;
};
};
};
obj.onreadystatechange = function() {
if(obj.readyState == 4) {
callback(obj);
};
};
obj.open(method, url, true);
obj.send(params);
return obj;
};
//請求的時候
var obj = ajax("{{domain}}/api/query/{{aoid}}?_=" + new Date().getTime(), "GET", function(obj) {
// do something
})
這樣,就可以啦。
插播廣告