2011-05-20 27 views
0

我有這個頁面,使用Default.aspx作爲「master」工作,並使用jQuery的load()函數加載子頁面。事情是這樣的:如何防止用戶加載應該加載ajax的「子」頁面

<ul id="navigation> 
     <li><a href="Item1.aspx"> Item 1</a></li> 
     <li><a href="Item2.aspx"> Item 2</a></li> 
    </ul> 
    <div id="contend"> 
     <!-- Ajax loaded pages goes here --> 
    </div> 
    <div id="footer"> 
    </div> 

的問題是:當用戶點擊一些項目,並讓我們說,選擇在一個新的窗口(標籤),他顯然看到該頁面只是物品,不開導航,頁腳和任何從默認頁面別的......

我在尋找一個解決辦法..

也許通過URL錨控制?像#item1

+0

Vitor,如果用戶關閉了javascript,會發生什麼情況?那麼,最好是鏈接實際上重新繪製頁面中的新內容。這被稱爲漸進式增強或優雅降級,即使幾乎每個人都啓用了JavaScript,這也是很好的做法。 – yitwail 2011-05-20 06:08:04

+0

你的意思是,即使我的電話是由ajax菜單製作的,重畫頁面?這不會違背它的全部目的嗎? – 2011-05-20 13:52:14

+0

我的意思是它應該重畫頁面,如果Ajax不工作,因爲沒有javascript – yitwail 2011-05-20 17:06:47

回答

2

用ajax發送一個附加參數。因此,您可以確定請求是否由ajax創建,並選擇如何構建響應。根據要求

例子:

<script type="text/javascript"> 
$(
    function() 
    { 
    $('#navigation a') 
     .click(
       function(e) 
       { 
       e.preventDefault(); 
       $('#contend').load(this.href,{'isAjaxRequest':true}); 
       } 
      ); 
    } 
); 
</script> 

如果用戶點擊該鏈接通常的方式,也將發送一個名爲「isAjaxRequest」一個POST參數,你可以檢查這個參數,而如果它存在,只輸出#contend的片段,否則輸出包含頁眉,頁腳等的整個頁面。

+0

你能提供一個基於我的結構(非常簡單)的例子嗎?我不知道我該如何重建結構。 – 2011-05-20 13:54:02

+0

是的,請參閱上文。 – 2011-05-20 15:37:58