2011-01-31 6 views
1

나는 다음을 수행하려고 :혼합 자바 스크립트와 인라인 서버 코드

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

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

    </script> 

당신이 볼 수 있듯이, 나는 새로운 서버 변수를 생성하지만, 자바 스크립트 변수의 값을 할당하기 위해 노력하고있어. 또는 적어도 javascript 변수를 평가해야합니다. (이것은 실제 세계의 문제에 대한 단순한 예제입니다.)이 작업을 수행 할 수있는 방법이 있습니까?

답변

4

문제 :

  1. 서버 측 코드가 서버에서 평가는 아무것도 전에 클라이언트로 전송된다.
  2. 서버가 문서 전송을 마친 후 브라우저에서 클라이언트 측 코드 (JavaScript)가 으로 계산됩니다.

위의 내용을 이해 한 후에는 현재 예제가 기술적으로 불가능하다는 것을 알 수 있습니다.

AJAX를 사용하여 새 데이터를 서버의 스크립트로 보내야하는 경우 (페이지 새로 고침을 방지하려는 경우)해야합니다. 스크립트는 데이터를 처리하고 브라우저에 응답합니다.

0

서버 코드는 페이지가 렌더링되기 전에 먼저 처리됩니다. 따라서 JavaScript 값을 서버에 다시 전달하려면 AJAX와 같은 것을 사용해야합니다.

0

개체에 @id를 제공하는 것이 서버 코드이므로 서버는 생성 시점에 이미 개체를 알고 있어야합니다. 하지만 아니요, 클라이언트와 서버를 인터리빙 할 수는 없습니다. 시간과 지리적으로 따로 따로 실행됩니다.

0

서버 변수가 이미 계산되어 있고 시간이 지나면 HTML이 생성되기 때문에이 작업을 수행 할 수 없습니다. 클라이언트 스크립트가 실행됩니다.

서버 측 코드가 실행 => 생성 된 HTML 파일이 브라우저에 제공 => 자바 스크립트 코드는이 프로세스는 단방향이기 때문에 Ajax 요청을 사용하지 않고 다시 그 변수를 줄 수있는 방법이 아니다

를 실행합니다.

그러나 ID가 필요하고 컨트롤이 .NET 컨트롤 인 경우 myControl.ClientID 값을 사용하면됩니다.

0

브라우저에서 서버로 데이터를 보내려면 양식 컨트롤 (텍스트 필드, 숨겨진 필드, 텍스트 영역, 체크 박스 등) 또는 아약스를 사용해야합니다. 귀하의 경우에는 자바 스크립트 개체를 문자열로 serialize하고 숨겨진 필드 또는 XmlHttpRequest를 통해 서버로 전달할 수 있습니다.

관련 문제