우선, ASP 페이지 실행 프로세스를 살펴 보겠습니다.
1. IIS는 ASP 파일을 찾아 ASP 엔진 (일반적으로 ASP.DLL) 처리에 제출합니다.
2. 엔진은이 ASP 파일을 열고 <%와%> 사이의 내용을 찾습니다. 스크립트 블록의 내용 만 엔진에 의해 분석되고 다른 컨텐츠는 스크립트 블록 사이에 무의미한 문자로 삽입됩니다. 실제로 분석 내용이 그 이상이라고 설명해야합니다. 많은 프로그램을 읽으면 일부 runat 속성이 Server의 <bood> 객체로 표시되어 있음을 알 수 있습니다.
3. 엔진의 스크립트 블록에있는 스크립트는 전체 코드를 작성할 수 있습니다.
<%
희미한 i
i = 1 ~ 5의 경우
%> 안녕하세요 세계!
< % next %>
엔진은 이러한 스크립트 블록을 별도로 분석하지 않지만 두 스크립트 블록에서 구문 오류를 만듭니다. 따라서 다음과 같은 결론을 얻습니다. 모든 비 서버 스크립트가 클라이언트로 전송되는 것은 아닙니다. 서버는 클라이언트 스크립트 실행에 대해 걱정하지 않아야하지만 서버의 스크립트를 통해 다른 클라이언트 스크립트를 출력 할 수 있습니다.
4. 최종 엔진은 텍스트 흐름 또는 스크립트의 실행 결과를 생성합니다. 이것은 문자열이며 클라이언트 브라우저의 웹 페이지로 전송됩니다. 클라이언트 브라우저는 현재 페이지에 표시됩니다. 페이지의 소스 코드 (소스 파일)에는 서버 스크립트가 포함되어 있지 않지만 서버 스크립트의 실행 결과가 포함되어 있습니다 (이것은 명백합니다).
< %… %> 및 <script runat = server> ... </script>
서버 -사이드 스크립트이며 동시에 처리 및 실행됩니다. 그들이 처형 할 때, 그들은 전체적이었습니다.
< %… %> 및 <script language = ...> ... </script>
전자는 서버 스크립트이고 후자는 클라이언트 스크립트입니다. 전자는 먼저 실행되고 후자는 실행됩니다.
실제로,이 둘의 스크립트는 동시에 실행될 수 있지만 공간은 여전히 다릅니다. 이전은 서버에서 실행되고 후자는 클라이언트 브라우저에서 실행됩니다. 전자는 논리적으로 미리 실행되어야합니다. 동시에 결론도 있습니다. 같은 페이지의 실행에서 클라이언트 스크립트는 어쨌든 서버 스크립트로 공급 될 수 없습니다. 획득 값 동일한 서버 응답에서 처리 할 수 없습니다.
구성 요소를 요청하십시오
서버 스크립트 및 클라이언트 스크립트는 자연스럽게 스크립트이므로 XMLHTTP 구성 요소, ADODB.connection 구성 요소 등을 만들 수 있습니다.
XMLHTTP가 서버의 잡기 웹 페이지 (예 : 수집)에 사용되는 경우 클라이언트의 AJAX 브러시 리포트에 사용되면 서버 뒷면의 서버를 방문하면 클라이언트가 생성되었습니다.
ADODB.connection 구성 요소는 일반적으로 서버 측면에서 생성되지만 데이터베이스가 실제로 클라이언트에 연결되어 있으면 서버 측면에서 생성됩니다. 최종 스크립트에서 만든 고객의 고객에게 의심의 여지가 없습니다.
요컨대, 모순 된 것들과 양쪽에는 고유 한 특성이 있습니다. 다른 것들이 다른 과정의 다른 단계를 가지고 있습니다. 이해 하지마 ...). 이 원칙은 모순의 보편성 원칙, 모순의 특수성에 대한 구체적인 분석, 모순을 해결하는 올바른 방법을 찾는 특정 분석 원칙을 준수해야합니다. 하나의 방법을 사용하여 다른 것들의 모순을 해결하는 반대. 열쇠가 열리고, 어떤 종류의 산 노래와 어떤 종류의 노래가 진실인지.
Server -side vbscript script 객체는 server.createobject (classname) 메소드를 사용합니다. client vbscript 객체는 createobject (classname) 메소드를 사용합니다.
일반적인 오류
<%
기능 tsize (b)
'이것은 내 커스텀 기능입니다
tsize = 중국
엔드 기능
%>
<a href = javaScript : <%tsize ( 'variable')%>> 내 정의 함수를 사용하려면 여기를 클릭하십시오 </a>
오류 분석 :
서버 스크립트와 클라이언트 스크립트의 차이점을 혼동합니다. 실제 실행 중에 Tsize가 서버의 프로그램이기 때문에 클라이언트가 Tsize와 같은 코드를 수신하지 않는다는 것을 알게됩니다. 대본은 사라지지 않을 것이며 고객에게 역할을하는 것은 불가능했습니다. 즉, 클라이언트 스크립트는 서버 -사이드 스크립트 함수를 직접 호출 할 수 없습니다.
실제로이 프로그램은 문법에 문제가 있습니다. 엔진 이이 컨텐츠를 처리 할 때 먼저 <%와%>, 즉 <%tsize ( 'variable')%> vbscript의 문법 규칙을 찾습니다. 글쎄, <%= tsize (변수)%> 서버 -사이드 스크립트에는 문법 오류가 없으므로 Tsize 기능은 정상적으로 중국으로 돌아갈 수 있으므로 클라이언트가받은 HREF 속성이 다음과 같이 작성됩니다. : JavaScript : 중국, 중국, 실행할 수 없습니다.
클라이언트 스크립트에 대한 서버 스크립트의 효과
앞에서 언급했듯이 서버 스크립트는 클라이언트 스크립트에서 사전에 논리적으로 실행되므로 이러한 코드는 다음과 같습니다.
<%
희미한 i
i = 1 ~ 5의 경우
response.write <script type = text/javaScript> _
& ALERT ( 'Hello World! & I &') </script>
다음
%>
응답 실행에 대해. 저장 및 자바 스크립트
다음 코드의 쓰기는 잘못되었습니다.
<%
Response.redirect index.asp
response.write <script type = text/javaScript> _
& ALERT ( '비밀번호 오류!') </script>
%>
이것은 일반적인 오류입니다. 작가는 종종 클라이언트가 암호 오류를 팝업하고 실제로이 효과를 얻을 수 없다고 생각합니다.
그 이유는 두 줄의 코드 처리와 관련이 있습니다. 두 줄의 코드는 동시에 작동 할 수 없습니다.
Response.Write는 클라이언트의 텍스트는 스크립트를 수신 한 후에이 스크립트를 실행할 수 있습니다.
Response.Redirect는 HTTP 헤더 정보를 클라이언트에게 보냅니다 (HTTP 헤더 정보는 무엇입니까? 예를 들어, 클라이언트 쿠키의 쓰기는 HTTP 헤더 정보입니다. 브라우저, 때로는 서버 케이블을 수정하고 때로는 서버 케이블을 수정합니다. 잘못된 쿠키를 수정하십시오. 대상은 전송되기 시작했으며,이 리디렉션 정보는 즉시 작동합니다. 버퍼에 얼마나 많은 내용이 작성되었는지에 관계없이 응답이 호출되면 호출 되며이 헤드 명령어를 클라이언트 브라우저로 보냅니다. 프로그램 실행을 동적으로 추적하는 경우 Response.Redirect를 호출 한 후 프로그램이 실행을 중지하므로 Response.Redirect를 호출하기 전에 서버 -사이드 프로그램에주의를 기울이십시오.
위의 예를 어떻게 수정해야합니까? 스크립트 프롬프트를 추가하기 위해 index.asp를 수정하지 않으려면 스티어링 명령을 클라이언트 스크립트에만 넣을 수 있습니다.
<%
response.write <script type = text/javaScript> _
& ALERT ( '!');
%>