2012-03-30 62 views
1

行之有效所以基本上,我有一個div是RUNAT = 「服務器」jQuery.html()不與Asp.Net的innerHTML

<div id="results" runat="server" class="results"></div> 

現在,我添加HTML到這個使用jQuery。

$('.results').html('Some crazy data'); 

然而,當我試圖訪問數據在這個div使用C#,它說的DIV沒有內容。

string myResults = results.innerHtml; 

myResults爲空。

有人可以幫我嗎?我從來沒有見過這種行爲。

非常感謝!

+1

應該工作...你確定你正在運行的數據文檔準備好時的代碼? – xandercoded 2012-03-30 17:31:37

+1

由於DIV不會發布到服務器,因此無法工作。如果你想把這些數據提供給服務器,把它複製到一個表單控件(比如說隱藏的輸入)。 – 2012-03-30 17:36:43

+2

這是因爲JavaScript運行客戶端,而C#代碼運行在服務器端。 div的內容(內部html)不會發布回服務器,因此您的C#代碼無法訪問它。 – 2012-03-30 17:39:45

回答

1

您可能正在尋找這樣的事情...

<div id="results" runat="server" class="results"></div> 
<input type="hidden" id="hiddenResults" runat="server" class="hiddenResults" /> 

$('.results').html('Some crazy data'); 
$('.hiddenResults').val('Some crazy data'); 

現在,您可以訪問服務器

string myResults = hiddenResults.Value; 
+0

它應該是hiddenResults.Value – 2012-04-02 17:07:39

1

而不是混合jQuery和Javascript。嘗試

var myResults = $(".results").html(); 

只是爲了驗證一切是正確的,看看你的results定義如下

var results = document.getElementById("results"); 
var myResults = results.innerHtml; 

如果你想的results值到達服務器,這是不可能的通過jQuery或Javascript,除非發送一個AJAX請求。

+1

但是,沒有理由讓你的代碼不工作,除非'results'指向null – Starx 2012-03-30 17:34:40

+1

'string myResults'沒有辦法是javascript代碼... – 2012-03-30 17:37:12

+1

OP正在訪問服務器上的數據而不是客戶端上的數據。 – 2012-03-30 17:37:23

4

這行看起來像C#:

string myResults = results.innerHtml; 

想必你想訪問你的服務器側的 DIV在C#。發生這種情況之前 html被髮送到瀏覽器。這意味着,這完全不起作用,因爲您在瀏覽器中設置了客戶端的值(在html已經發送之後)

+0

你是對的,但有沒有解決這個問題? – 2012-03-30 18:13:41

+0

@唔,是的,當然,但不清楚你想做什麼。 1)服務器生成HTML並將其發送到瀏覽器2)瀏覽器運行JavaScript並將div設置爲包含「一些瘋狂的數據」3)您想要使用該數據...何時?哪裏?爲什麼?請詳細說明你的用例,我們可以推薦一種方法(可能是AJAX)。 – 2012-03-30 18:16:16