2015-10-11 125 views
1

我在防止Popstate事件發出Ajax請求時遇到了問題。Javascript Popstate事件阻止Ajax請求

所以,這是我的代碼:

$(window).on('popstate', function(e) { 
     var state = e.originalEvent.state; 
      if (state !== null) { 


    loadProducts(location.pathname); 
     } 

}); 

function loadProducts(url) { 

    $.ajax({ 
      type  : "GET", 
      url   : url, 
      dataType : "html", 
      cache  : true, 
      success  : function(checks) { 
          $(".ajaxpage").html(checks); 
        } 
      }); 
}; 

$('#product').on("click", ".paging a", function(e) { 
    e.preventDefault(); 
    history.pushState(null, null, $(this).attr('href')); 
    loadProducts($(this).attr('href')); 
}); 

pushState的事件確實很好用Ajax請求。但是當我點擊「後退按鈕」時,頁面會再次執行相同的Ajax請求。這是爲什麼?我不再需要Ajax了,因爲我已經訪問過那個頁面了?就像Github所做的一樣?

如何防止對popstate事件的ajax請求?

我的代碼有什麼問題?

+0

你需要改變你的代碼緩存箇舊請求和重用響應。 – SLaks

+0

是否意味着將緩存更改爲false或將其刪除?什麼是重用響應? –

+0

您需要編寫代碼來存儲以前的回覆,以便完全跳過該請求。請注意,請求可能尚未完成;你應該使用承諾。 – SLaks

回答