推奨:ASPページネーションと日付をRFC822形式にフォーマットする方法ページを計算します、hehe、次の参照コンテンツを判断する必要はありません:intnumpage = abs( - ( - (intnumrecord/intperpage)))フォーマット日付
コンピュータルームが閉じようとしている場合、または急いでMMとデートする場合は、4番目の段落に直接ジャンプしてください。
以下に説明するスクリプトには、サーバー側のスクリプトとクライアント側のスクリプトが含まれます。サーバー側のスクリプトは、サーバーで実行されているスクリプトの部分を指します。たとえば、共通のResponse.Writeは明らかにサーバーで実行されます。サーバー側のスクリプトは、VBScriptおよびJScript言語で記述できます。この記事では、VBScriptが使用されます。JScriptは同じ原則です。
クライアントスクリプトは、VBScriptとJavaScriptの2つの言語を含むと見なすこともできます。これは、クライアントブラウザーで実行される言語のスクリプトです。たとえば、Webページにアクセスすると、メッセージボックスがポップアップします。これは、クライアントスクリプト(Alert、Msgboxなど)を使用して行われます。これは、サーバー側のスクリプトができることではありません。クライアントスクリプトとサーバースクリプト(IEやFirefoxなどのブラウザー)には大きな違いがあります。つまり、クライアントスクリプトはドキュメントオブジェクトモデル(DOM)にアクセスしてページ内のオブジェクトを操作できます(ページタイトルの変更、DivなどのInnerHTML属性の変更など)。
まず、ASPページの実行のプロセスを理解しましょう
1.IISはASPファイルを見つけ、処理のためにASPエンジン(通常はASP.DLL)に提出します。
2。エンジンはこのASPファイルを開き、<%と%>の間のコンテンツを見つけ、もちろん<Script runat = server>と対応する</script>の間のコンテンツを見つけます。これらの内容は、スクリプトブロックと呼ばれます。スクリプトブロック内のコンテンツのみがエンジンによって解析され、他のコンテンツは無視され、スクリプトブロック間に意味のない文字として挿入されます。実際、このコンテンツが解析されている以上のものがあることを明確にする必要があります。サーバー側には、<! - #インクルード*** - >クラスのファイルが含まれています。クラスはエンジンによって含まれ、処理されます。さらにプログラムを読んだ場合、Runat属性を持つサーバーとしてマークされたいくつかの<オブジェクト>オブジェクトも処理されることがわかりますので、ここでは詳細に説明しません。
3.エンジンはスクリプトブロックでスクリプトを実行します。これらのサーバー側のスクリプトは全体として実行されます。つまり、次のコードを書くことができます。
| 以下は引用されたコンテンツです。 <% 薄暗いi i = 1から5の場合 %> hello world! <%next%> |
エンジンはこれらのスクリプトブロックを個別に解析せず、両方のスクリプトブロックで構文エラーが発生します。そのため、次の結論に達しました。すべての非サーバースクリプトコードがクライアントに送信されるわけではなく、この非サーバースクリプトコードがスクリプトブロックによって制限されている可能性があります。サーバーは、クライアントスクリプトの実行については間違いなく心配することはありませんが、サーバースクリプトを介して異なるクライアントスクリプトを出力できます。
4.最終的に、エンジンはテキストストリームまたはスクリプトの実行結果を生成します。これは、クライアントブラウザのWebページに送信されたコードである文字列と見なすことができます。クライアントブラウザにページが表示されます。この時点で、ページのソースコード(ソースファイル)にはサーバー側のスクリプトは含まれていませんが、サーバー側のスクリプトの実行結果が含まれています(これは明らかです)。
<%…%>および<スクリプトrunat = server>…</script>
これらはすべて、同時に処理および実行されるサーバー側のスクリプトです。それらは全体として実行されます。
<%…%>および<スクリプト言語=…>…</script>
前者はサーバー側のスクリプトであり、後者はクライアント側のスクリプトです。前者は最初に実行され、後者は後で実行されます。
実際、それは完全に真実ではありません。 2つのスクリプトは同時に実行される場合がありますが、スペースは異なります。まだ次のとおりです。前者はサーバーで実行され、後者はクライアントブラウザで実行されます。前者は、後者が事前に論理的に実行する必要があります。同時に、同じページの実行中に、クライアントスクリプトを何らかの形でサーバースクリプトに返還できないと結論付けました。つまり、クライアントはメッセージブックを参照して新しいメッセージを提出するか、クライアントスクリプトによって取得された値を同じサーバー応答で処理できません。
コンポーネントの呼び出しについて
サーバー側のスクリプトとクライアント側のスクリプトはどちらもスクリプトであるため、XMLHTTPコンポーネント、ADODB.CONNECTIONコンポーネントなどを自然に作成できることに注意してください。
XMLHTTPがサーバー上のWebページ(コレクションなど)をクロールするために使用される場合、サーバースクリプトで作成する必要があります。クライアントのAJAXに使用され、バックエンドがリフレッシュせずにサーバー上のページにアクセスすると、クライアントで実行され、クライアントに自然に作成されます。
ADODB.Connectionコンポーネントは、データベースにアクセスするために使用されます。一般的に、サーバー側に作成されます。結局のところ、サーバー側ASPプログラムはデータベースデータを実行しています。ただし、データベースがクライアントに本当に接続されている場合(http://bbs.bccn.net/thread-224966-1-2.htmlなど)、クライアントスクリプトで間違いなく作成されます。
要するに、矛盾するものとそれぞれの側面には独自の特徴があります。異なるものには異なる矛盾があります。同じことは、開発のさまざまなプロセスと段階で異なる矛盾を持っています。同じことの異なる矛盾と同じ矛盾の2つの異なる側面には、独自の特性があります(理解できない場合は、それらを無視できます...)。この原則には、特定の問題の特定の分析の原則を遵守する必要があります。矛盾の普遍性の原則のガイダンスの下で、矛盾の特異性を具体的に分析し、それらを解決する正しい方法を見つける必要があります。異なることの間の矛盾を解決するために、1つの方法の同じ規模の採用に反対します。これは、キーを開いて山に行くときに歌を歌うときにあなたが言うことです。
サーバー側VBScriptスクリプトは、server.createobject(className)メソッドを使用してオブジェクトを作成し、クライアント側VBScriptスクリプトはcreateObject(className)メソッドを使用してオブジェクトを作成します。
典型的なエラー
| 以下は引用されたコンテンツです。 <% 関数tsize(b) 「これが私のカスタム関数です tsize =中国 エンド関数 %> <a href = javascript:<%tsize( 'variable')%>>ここをクリックして、定義した関数を使用してください</a> (http://bbs.bccn.net/thread-225244-1.html) |
エラー分析:
サーバー側のスクリプトとクライアント側のスクリプトの違いを混同します。実際に実行するとき、Tsizeはサーバー側のプログラムであるため、クライアントはTsizeのようなコードをまったく受信しないことがわかります。エンジンで処理された後(機能のエンジンの処理は、サーバー側のスクリプトによって純粋に呼び出され、クライアントに送り返されません)、それは消え、クライアントでは動作できません。これは、クライアントスクリプトがサーバー側のスクリプトの関数を直接呼び出すことができないことを意味します。
実際、このプログラムには構文エラーがあります。エンジンがこのコンテンツを処理すると、最初に<%と%>、つまり<%tsize( 'variable')%の間のコンテンツが見つかります。明らかに、このコンテンツはVBScriptの構文ルールに準拠していません。さて、それを<%= tsize(変数)%に変更します>サーバー側のスクリプトに構文エラーはありません。この時点で、Tsize関数は通常の価値を中国に正常に返すことができるため、クライアントが受け取ったHREF属性は次のように書かれています。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> %> |
これはよくある間違いです。ライターは、このようにコードを書くことで、クライアントがパスワードエラープロンプトをポップアップしてからindex.aspに移動する可能性があるとしばしば考えます。実際、これは起こり得ません。 2行のコードが順番に交換されたとしても、この効果を達成することは不可能です。
その理由は、サーバーが2行のコードを処理する方法に関連しています。これらの2行のコードは同時に動作することはできません。
Response.Writeクライアントにテキストを送信します。このテキストの内容は、スクリプトにすることができます。クライアントブラウザは、このスクリプトを受信した後にこのスクリプトを実行できます。それを受け取った後にのみ実行できることに注意してください。
Respons.RedirectはHTTPヘッダーをクライアントに送信します(HTTPヘッダーとは何ですか?たとえば、クライアントクッキーへの書き込みはHTTPヘッダー情報であり、HTTPヘッダー情報はHTTPの科目の前にクライアントブラウザーに送信されます。情報。)、情報の内容は、クライアントブラウザにページにジャンプして閲覧するように指示します。このリダイレクト情報はすぐに機能することに注意してください。つまり、このリダイレクト情報は排他的です。バッファーがオンになると、Response.Writeを使用してバッファーにどれだけのコンテンツが書き込まれていても、Response.Redirectが呼び出されると、バッファがクリアされ、ヘッダー命令がクライアントブラウザーに送信されます。プログラムの実行を動的に追跡する場合、Response.redirectを呼び出した後、プログラムが実行を停止することもわかります。そのため、Response.redirectを呼び出す前に、サーバー側のプログラムはデータ接続およびその他の操作を閉じる必要があることに注意してください。
では、上記の例をどのように変更する必要がありますか?そのindex.aspを変更してスクリプトプロンプトを追加したくない場合は、このように実行するためにステアリングコマンドをクライアントスクリプトに配置することしかできません。
| 以下は引用されたコンテンツです。 <% respons.write <script type = text/javascript> _ &alert( '!'); location.href = 'index.asp' </script> %> |
共有:ASP 3.0高度なプログラミング(33) 7.4.2 VBScriptエラー処理VBScriptでは、スクリプトインタープリターは発見するエラーを処理できず、ON ERROR Resume Nextステートメントを使用して次のステートメントを実行し続けます。このステートメントが処理されると、スクリプトエンジンは後続のプログラムを実行し続けます。