2011-08-08 78 views
0

我正在使用jqueries地址更改事件,並在用戶在瀏覽器中複製並粘貼URL時遇到了障礙。我需要加載包含表單的頁面的一部分。我可以在每次分頁之後做到這一點,但它似乎真的很無效。如何使用jquery加載檢查加載的div標籤的內容?

這裏是我當前的代碼塊:

$.address.change(function(e) { 

    var urlAux = e.value.split('='); 
    var page = urlAux[0]; 
    var start = urlAux[1]; 

    if (page == "/visits") { 

     $.address.title("Profile Views"); 

     if (start) { 

      $('#start').val(start); 

      // ***** If a user has copied and pasted this URL with a start value then I first need to load visits.php in the main div tag. Is it possible to see if this is loaded or not? 

      $.post("visits_results.php", $("#profile_form_id").serialize(), 
       function(data) { 
        $('#search_results').html(data); 
        location.href = "#visits=" + start; 
       }); 

     } 
     else { 
      var args = localStorage.getItem("visits"); 

      $('#main').load("visits.php?" + args, function() { }); 
     } 
    } 

我試圖解決辦法是這樣的:

var args = localStorage.getItem("visits"); 

$('#main').load("visits.php?" + args, function() { 

    $('#start').val(start); 

    $.post("visits_results.php", $("#profile_form_id").serialize(), 
     function(data) { 
      $('#search_results').html(data); 
      location.href = "#visits=" + start; 
     }); 
    }); 

必須有一個更好的辦法...這是realoading頁的相同部分(visits.php)與每個分頁事件。有沒有更好的方法來加載網址,而不是觸發地址更改?代替

+0

我不知道你的總體目標是什麼。這聽起來像你已經格式化了'visits.php'的html /表單數據,你總是需要,但我猜,包括頁面時,它的空白看起來俗氣。總結它? – DefyGravity

+0

visits.php只是一個表單,當發佈時將其結果返回給頁面上的另一個div標籤。分頁控件是visits.php頁面的一部分。問題在於,如果我在每次更改頁面後都需要加載頁面的visits.php部分,那麼討價還價控件在每次加載時都會「閃爍」。我可以加載表單一次,但如果用戶直接在瀏覽器中輸入網址,則失敗。我需要一種方法來檢測這個並只加載一次visits.php表單或確定它是否已經加載。有什麼想法嗎? – Paul

+0

經過多少次黑客攻擊後,我想出了這個解決方案,似乎可以做到這一點。我不確定它有多好,但它似乎有訣竅。我現在得到主要的div id,並在窗體中的唯一字符串上進行正則表達式匹配。如果我沒有看到它,我加載表單然後加載結果。不知道這是否是好的做法,但似乎解決了我的問題。 – Paul

回答

1

從他的評論中使用paul的解決方法,而不是使用Regex的visit.php形式的html內容,此解決方案將查找附加到#mainID的data()。

保羅的身邊工作筆記:

後多一點的黑客,我想出了這個解決方案,似乎做 的伎倆。我不確定它有多好,但它似乎有訣竅。 I 現在得到主要的div id,並在 表單中對唯一字符串進行正則表達式匹配。如果我沒有看到它,我加載表單然後加載結果。不是 確定這是否是好的做法,但似乎解決了我的問題。

方法使用。數據(),而不是一個正則表達式搜索visits.php的HTML的:

/*check if we're missing visits.php by looking for data() flag*/ 
      if(!($("#main").data()["hasVisitsPhp"])){ 
       var args = localStorage.getItem("visits"); 
       $('#main').load("visits.php?" + args, function() { 
       $('#start').val(start); 
       $.post("visits_results.php", $("#profile_form_id").serialize(), 
        function(data) { 
/* we've loaded visits.php, set the data flag on #main*/ 
       $('#main').data("hasVisitsPhp","loaded"); 
         $('#search_results').html(data); 
         location.href = "#visits=" + start; 
        }); 
       }); 
      } 
0

嘗試window.location.hash。改變整個href可以/將觸發整頁重新加載,而只改變散列本身應該最多導致頁面滾動。

+0

我試過,但不幸的是#每個div標籤獲取加載每次因爲URL更改每次(start = x,x是頁碼)當用戶在瀏覽器中複製包含頁碼的URL時,這只是一個問題。我想讓他們直接進入頁面。我可以避免觸發地址更改事件是用戶直接調用URL嗎? – Paul

+0

「直接」?如通過輸入或剪切/粘貼將地址欄輸入到地址欄中? –

+0

直接作爲用戶將URL複製到瀏覽器中,如下所示:http://localhost/menu.php?home#visits = 20 – Paul