2013-08-02 68 views
0

我正在使用ajax創建網絡應用程序,並且在獲取上次訪問的URL時遇到問題,以便在有人按下瀏覽器上的按鈕時可以重新加載內容。jQuery在ajax頁面中獲取上次訪問的網頁

假設我在http://example.com,然後我導航到http://example.com/#hello-world並導航到http://example.com/#using-custom-function

當我們前進時,它運行良好,但當用戶單擊瀏覽器上的後退按鈕時,頁面不會加載內容,但URL會更改。

我已經嘗試過哈希更改,但這也無濟於事,因爲它也爲前向和後向請求重新加載頁面。

我想知道是否有解決方案。

這裏是我的AJAX功能,

function get_gallery_artworks(arguments,data,media,type,page,callback_function, gal_ids){ 

    /*Masking*/ 
    //Get the screen height and width 
    var maskHeight = jQuery('window').height(); 
    var maskWidth = jQuery('window').width(); 

    var loaderWidth = maskWidth/2; 

    var overlay_id = 'overlay-div'; 

    //Set heigth and width to mask to fill up the whole screen 
    jQuery('.loader-image').css({ 
     'left':loaderWidth, 
     'top':maskHeight 
    }); 
    jQuery('.overlay').css({ 
     'opacity':0, 
     'height':jQuery(document).height(), 
     'width':jQuery(window).width() 
    }); 

    //transition effect  
    jQuery('.overlay').fadeIn(1000);  
    jQuery('.overlay').fadeTo("slow",0.8); 


    var loader_height = ((jQuery(document).height())/4); 
    var loader_width = ((jQuery(window).width())/2); 
    jQuery('#'+overlay_id).css('left', loader_width); 
    jQuery('#'+overlay_id).css('top', loader_height); 

    jQuery('#'+overlay_id).css('display', 'block');//alert('#'+id); 
    jQuery('#'+overlay_id).css('padding', '0px 0px 15px 15px'); 

    //transition effect 
    jQuery(overlay_id).fadeIn(2000); 
    var data_str = arguments; 

    window.location.hash = 'gallery='+data_str; 

    var data_arr = data_str.split("_"); 
    collection_id = data_arr['0']; 
    artist_id = data_arr['1']; 
    artwork_id = data_arr['2']; 

    jQuery.ajax({ 
     type : 'POST', 
     url : ajax_url, 
     data : { 
      collection_id:collection_id, 
      artwork_id:artwork_id, 
      artist_id:artist_id, 
      media:media, 
      type:type, 
      callback:callback_function, 
      navigation:jQuery('.gs-top-navigation').html(), 
      gspage:page, 
      data : '',//data_obj 
      gal_ids : gal_ids 
     }, 
     success: function(result) { 

      jQuery('.overlay').hide(); 
      jQuery('.window').hide(); 
      jQuery('.gs-content').html(result); 
      window.document.body.scrollTop = 0; 
     window.document.documentElement.scrollTop = 0; 
     }, 
     error: function(jqXHR, textStatus, errorThrown) 
     { 
      alert(textStatus); 
      alert(errorThrown); 
      jQuery('.overlay').hide(); 
      jQuery('.window').hide(); 
     } 
    }); 

} 
+0

是的,有一個解決方案..但你有什麼試過?你的代碼是什麼樣的? – putvande

+0

這是我迄今爲止所做的。 '的jQuery(窗口)。在( 'hashchange',函數(){ window.location.reload(真); });' 但它總是重新加載頁面 –

+0

,你可以嘗試使用一個jquery插件解決方案[jQuery的hashchange](http://benalman.com/projects/jquery-hashchange-plugin/)允許你執行url/hashchange –

回答

0

我得到它的工作使用

jQuery(window).on('hashchange', function() { 
    jQuery("body").load(location.href+' body'); 
}); 

但是有一個問題,但我需要它時,網址就像是location.href==previous url以前的網址,然後我需要調用運行以上

相關問題