まず第一に、ASPページの実行のプロセスを見てみましょう
1。IISはASPファイルを見つけて、ASPエンジン(通常はASP.DLL)処理に送信します。
2。このASPファイルを開き、もちろん、<Script runat = server>とこれらのコンテンツの間にコンテンツがあります。スクリプトブロック内のコンテンツのみがエンジンによって分析され、他のコンテンツはスクリプトブロック間で意味のない文字として挿入されます。実際、分析の内容はそれ以上であることを説明する必要があります。多くのプログラムを読んだ場合、いくつかのルナット属性がサーバーの<オブジェクト>オブジェクトとしてマークされていることもわかります。
3。これらのサーバーのスクリプトブロックのスクリプトは、次のように実行できます。
<%
薄暗いi
i = 1から5の場合
%> hello world!
<%next%>
エンジンはこれらのスクリプトブロックを個別に分析するのではなく、両方のスクリプトブロックで構文エラーを作成します。したがって、次の結論が得られます。すべての非サーバースクリプトがクライアントに送信されるわけではありません。サーバーは、クライアントスクリプトの実行について心配する必要はありませんが、サーバーのスクリプトを介して異なるクライアントスクリプトを出力できます。
4.最終的なエンジンは、テキストフロー、またはスクリプトの実行結果を生成します。これは、クライアントブラウザのWebページに送信されるコードであると考えることができます。クライアントブラウザはページに表示されます。ページのソースコード(ソースファイル)にはサーバーのスクリプトが含まれていませんが、サーバースクリプトの実行結果が含まれています(これは明らかです)。
<%…%>および<スクリプトrunat = server> ... </script>
これらはサーバー側のスクリプトであり、同時に処理および実行されます。彼らが実行するとき、彼らは全体としていた。
<%…%>および<スクリプト言語= ...> ... </script>
前者はサーバースクリプト、後者はクライアントスクリプトです。前者は最初に実行され、後者は実行されます。
実際、2つのスクリプトは同時に実行される場合がありますが、スペースはまだ異なります。前者はサーバーで実行され、後者はクライアントブラウザで実行されます。前者は事前に論理的に実行する必要があります。同時に、結論もあります。同じページの実行では、クライアントスクリプトをとにかくサーバースクリプトに返信することはできません。つまり、クライアントはメッセージブックを閲覧して新しいメッセージまたはクライアントスクリプトを送信する取得値同じサーバーの応答で処理することは不可能です。
コンポーネントを呼びます
サーバースクリプトとクライアントスクリプトは自然であることに注意してください。
XMLHTTPがサーバーのグラブするWebページ(収集など)に使用される場合、サーバースクリプトで作成され、サーバーの背面にあるサーバーにアクセスします。クライアント。
adodb.connectionコンポーネントは、一般的にデータベースにアクセスするために使用されます。それが最終スクリプトで作成された顧客の顧客にあることは間違いありません。
要するに、矛盾するものとそれぞれの側には独自の特性があります。さまざまな矛盾があり、同じものの異なる段階が異なる矛盾があり、同じ矛盾が異なります。見ないでください...)。この原則は、矛盾の普遍性の原則、矛盾の特殊性の特定の分析、および矛盾の解決方法を見つけるために、特定の問題の特定の原則を遵守する必要があります。 1つの方法を使用して、さまざまなことの矛盾を解決することに反対します。鍵が開かれ、どのような山が歌い、どのような歌が真実ですか。
Server -Side VBScript作成オブジェクトは、server.createobject(className)メソッドを使用します。
典型的なエラー
<%
関数tsize(b)
「これが私のカスタム関数です
tsize =中国
エンド関数
%>
<a href = javascript:<%tsize( 'variable')%>>ここをクリックして私の定義関数を使用してください</a>
エラー分析:
サーバースクリプトとクライアントスクリプトの違いを混同します。実際の実行中、Tsizeはサーバー上のプログラムであり、エンジンが処理された後、クライアントはTsizeなどのコードを受信していないことがわかります(機能のエンジンの処理は、サーバーに純粋に呼び出されます。スクリプト、それはそれが消えたわけではなく、クライアントで役割を果たすことは不可能でした。つまり、クライアントスクリプトは、サーバー側のスクリプト関数を直接呼び出すことはできません。
実際、このプログラムは文法で間違っています。エンジンがこのコンテンツを処理すると、最初に<%と%>、つまり<%tsize( 'variable')%> vbscriptの文法ルールを見つけます。さて、<%= tsize(変数)%>サーバー側のスクリプトで文法エラーはありません。 :JavaScript:中国、中国、実行できません。
クライアントスクリプトに対するサーバースクリプトの効果
前述のように、サーバースクリプトは事前にクライアントスクリプトで論理的に実行されるため、このようなコードは実行可能です。
<%
薄暗いi
i = 1から5の場合
respons.write <script type = text/javascript> _
&alert( 'hello world!&i&')</script>
次
%>
Response.redirectおよびJavaScriptの実行について
次のコードの執筆が間違っていることに注意してください。
<%
Response.redirect index.asp
respons.write <script type = text/javascript> _
&alert( 'password error!')</script>
%>
これは一般的なエラーです。
その理由は、コードの2行の処理に関連しています。 2行のコードは同時に機能することはできません。
Response.Writeは、このテキストのテキストです。
Response.RedirectはHTTPヘッダー情報をクライアントに送信します(HTTPヘッダー情報とは何ですか?たとえば、クライアントCookieの書き込みはHTTPヘッダー情報です。被験者が送信され始めたため、間違ったCookieを変更し、HTTPヘッダー情報を送信することはできません。つまり、このリダイレクト情報は排他的です。バッファーにいくつのコンテンツが書かれていても、Response.redirectが呼び出され、呼び出され、このヘッド命令をクライアントブラウザに送信します。プログラムの実行を動的に追跡すると、Response.redirectを呼び出した後、プログラムが実行を停止するため、Response.redirectを呼び出す前にサーバーサイドプログラムに注意を払ってください。
では、上記の例をどのように変更する必要がありますか? index.aspを変更してスクリプトプロンプトを追加したくない場合は、クライアントスクリプトにステアリング命令を実行するためだけに配置できます。
<%
respons.write <script type = text/javascript> _
&alert( '!'); local.href = 'index' </script>
%>