2011-08-22 78 views
2

我目前正在處理某種管理方法,以便能夠保存某些文本並在另一頁上顯示此內容。使用Javascript在另一個頁面上引用變量。

目前,「管理」頁面中的默認值將從其他頁面引用。這是一個簡單的頁面:

<asp:TextBox Text="Testing jQuery method" ID="TextBox" runat="server"/> 
<asp:CheckBox Checked = "true" ID="CheckBox" runat="server" /> 

現在,引用這些領域實際上是一個簡單的HTML文件的網頁,所以我想使用jQuery來引用的字段。我試圖使用jQuery ajax調用,但我似乎無法讓它正常工作。

<script type="text/javascript" src="Scripts/jquery-1.4.1.js"> 
var asp_checked; 
var asp_text; 

try { 
    jQuery.ajax({ 
     url: '~/About.aspx', 
     success: function (response, status, xhr) { 
      if (status != "error") { 
       asp_checked = $('#CheckBox', response).text(); 
       asp_text = $('#TextBox', response).text(); 
      } 
      else { asp_text = "Error in jQuery Call"; } 
     }, 
     async: false 
    }); 
    document.write(asp_text); 
     } 
catch (err) { 
    document.write("The jQuery is not working"); 
} 
</script> 

注意事項:
1.我真的不知道很多關於jQuery的一般。
2.我不能使用cookies(我不認爲)。這將通過我們的企業內部網進行公告等。
3. jQuery代碼取自SO,但我不記得問題參考。當我這樣做時,我會在這裏更新。

+0

只有將工作是,如果'About.aspx'正在生成JSON的方式。 –

+0

@rockinthesixstring:不正確,jQuery能夠加載HTML並將其解析爲DOM對象(並因此獲取這些元素的值)。正如我所看到的,真正的問題在於,ASP可能會改變您的元素ID,因此在ASP代碼!='id =「CheckBox」中的id =「CheckBox」後,會將其設置爲HTML。 (但你可以在ASP代碼中使用'ClientIdMode') –

+0

這聽起來像使用[HTML5本地存儲](http://diveintohtml5.org/storage.html)會幫助你! – Mottie

回答

2

因爲這是一個ASP控件,請記住,ASP喜歡爲控件製作自己的(「相對」)ID。像<asp:CheckBox id="cb" />之類的東西一旦碰到最終結果頁面,就會變成<input type="checkbox" id="SomeContainer_foo$cb" />。 (這意味着使用$('#cb')不再有效,因爲現在控件的ID中包含所有其他信息)

您的選擇?

  1. 更改控制由控制設置ClientIdMode使用靜態 IDS。這使得您將ASP標記傳輸到HTML頁面時用作ID的任何內容。
  2. jQuery中您選擇更改爲這樣的事情:$('[id$=cb]')$=的意思是「結束」)
+0

感謝您詳細闡述「$」在jquery選擇器中 - 我已經開始看到它在幾個地方出現,並且不熟悉這個符號。 – mikemanne

+0

@mikemanne:'$()'是使用'jQuery )'但是,'$'_within_選擇器意味着別的東西,在這種情況下它是一個部分ID匹配。 –

相關問題