2011-01-31 1 views
1

Я пытаемся сделать следующее:смесительного Javascript и коды сервера рядного

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

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

    </script> 

Как вы можете видеть, я пытаюсь создать новый переменный сервер, но присвоить значение переменного яваскрипта. Или, по крайней мере, оценить переменную javascript. (Это упрощенный пример проблемы реального мира, которую я пытаюсь решить) Есть ли способ, которым я могу это сделать?

ответ

4

Проблема:

  1. Серверный код вычисляется на сервере, , прежде чем что-либо передается клиенту.
  2. Код клиента (JavaScript) оценивается в браузере после того, как сервер завершил передачу документа.

После понимания вышеуказанных утверждений вы увидите, что ваш текущий пример технически невозможно.

Что вам нужно сделать (если ваша цель - предотвратить обновление страницы) отправляет новые данные в скрипт на сервере с помощью AJAX. Сценарий обработает данные и ответит на браузер.

0

Код сервера сначала обрабатывается, прежде чем страница будет отображаться. Поэтому вам нужно будет использовать что-то вроде AJAX для передачи значения JavaScript на сервер.

0

Поскольку это ваш код сервера, который дает объекту @id, сервер должен уже знать его в момент создания. Но нет, вы не можете так чередоваться с клиентом и сервером: они запускаются непересекающимися по времени и географии.

0

Вы не можете сделать этого, потому что переменная сервера уже была рассчитана, а HTML был сгенерирован к моменту, когда запускается клиентский скрипт.

Server Side Code Runs => Сгенерированный файл HTML Служил в браузер => Javascript код Запускает

Этот процесс является односторонним, так что это не способ дать эту переменную обратно без использования запроса Ajax.

Однако, если все, что вам нужно, это идентификатор, а элемент управления - это элемент управления .NET, вы можете просто использовать значение myControl.ClientID.

0

Для отправки данных из браузера на сервер вы должны использовать элементы управления формой (текстовое поле, скрытое поле, текстовое поле, флажок и т. Д.) Или ajax. В вашем случае вы можете сериализовать javascript-объект для строки и передать ее на сервер через скрытое поле или XmlHttpRequest.