簡體   English   中英

混合使用javascript和內聯服務器代碼

[英]Mixing javascript and inline server code

我正在嘗試執行以下操作:

   <script>
      var documentId = %(this).attr('id');

      <% int docId = %>documentId<%;%>

   </script>

如您所見,我正在嘗試創建一個新的服務器變量,但是要分配javascript變量的值。 或至少評估javascript變量。 (這是我試圖解決的現實世界問題的一個簡單例子)我有什么方法可以做到這一點?

問題:

  1. 在將任何內容傳輸到客戶端之前 ,在服務器上評估服務器端代碼。
  2. 在服務器完成文檔傳輸后 ,在瀏覽器中評估客戶端代碼(JavaScript)。

在理解了上述陳述之后,您將看到您當前的示例在技術上是不可能的。

您需要做的(如果您的目標是阻止頁面刷新)是使用AJAX將新數據發送到服務器上的腳本。 該腳本將處理數據並響應瀏覽器。

在呈現頁面之前,將首先處理服務器代碼。 因此,您必須使用類似AJAX的東西將JavaScript值傳遞回服務器。

由於服務器代碼為對象提供了@id,因此服務器應該在創建時就知道它。 但不,你不能像這樣交錯客戶端和服務器 - 它們在時間和地理上不相交

您無法執行此操作,因為已經計算了服務器變量,並且在客戶端腳本運行時已生成HTML。

服務器端代碼運行=>生成的HTML文件服務器到瀏覽器=> Javascript代碼運行

這個過程是單向的,所以沒有辦法在不使用Ajax請求的情況下返回該變量。

但是,如果您只需要id,並且控件是.NET控件,則只需使用myControl.ClientID值即可。

要將數據從瀏覽器發送到服務器,您應該使用表單控件(文本字段,隱藏字段,文本區域,復選框等)或ajax。 在您的情況下,您可以將javascript對象序列化為字符串,並通過隱藏字段或XmlHttpRequest將其傳遞給服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM