推奨:ASPコントロールXMLデータベース用の6つの非常に古典的なコードNo.1- XMLデータベースdata.xml <?xmlバージョン= 1.0?> <レコード> <レコード> <name> caca </name> <qq> 1を作成します
7.2.4クライアントスクリプトエラー
これまでのところ、ASPからのエラーについて学びました。ただし、ASPは、クライアントスクリプトを含むWebページを作成するためにもよく使用されます。クライアントコードを含む<script>要素がrunat = server属性に設定されていない場合、ASPはサーバーを考慮せず、Webページ情報を変更せずにクライアントに送信しません。
したがって、ASP Webページが開かれ、ブラウザエラーダイアログが表示された場合、サーバー側のASPプログラムコードのエラーを探してはいけません。ブラウザはASPプログラムコードを表示できないため、エラーを認識できません。クライアントにダイアログボックスが表示される場合、クライアントコードにエラーが必要です。
1。構文エラー
Webページのクライアントプログラムコードに構文エラーがある場合、ブラウザは、スクリプトがクライアントにダウンロードされたときに対応するエラーが発生します。 Webページ内のコンテンツはまだ正常にロードできますが(これらのクライアントスクリプトコードによって動的にロードされない限り)、Webページは実行を停止します。ユーザーは、エラーの詳細を含むダイアログボックス、またはWebページにエラーが含まれていることを示すステータスメッセージが表示されます。
最新のブラウザは、Webスクリプトエラーの詳細を非表示にする傾向があり、ステータスバーに小さなエラーアイコンのみを表示します。 IE 4.0およびIE 5.0では、図7-14に示すように、[インターネットオプション]ダイアログボックスの[インターネットオプション]ダイアログボックスの詳細なページを介して[通常のエラー]ダイアログボックスをアクティブにすることができます。
図7-14高度なページ設定画面
スクリプトプログラムコードのクライアントエラーの処理は、サーバー側のエラーと同様であり、通常はダブルクリックしてサーバーディレクトリから直接Webページをダウンロードできるため簡単です。一般に、ブラウザで結果を観察するために、WebサーバーとHTTPを介してWebページを取得する必要はありません。唯一の違いは、一部のサーバーインタラクションが、データのバインディングやRDSを使用した動的荷重など、クライアントスクリプトによって実行されることです。
2。ランタイムまたはセマンティックエラー
クライアントスクリプトでは、多くの場合、構文エラー、実行時またはセマンティックエラーが発生する可能性があります。実際、この現象はクライアント側で非常に一般的です。クライアントはサーバー側のようなスクリプト環境を制御できないため、ユーザーがマシンで何を実行しているかはわかりません。実際、サーバーは、ブラウザ機能などの一部のコンポーネントからのみ一般的な状況を取得できます。
したがって、クライアントオブジェクトまたはスクリプト言語とプロパティの特別なバージョンを使用するスクリプトプログラムは、適切に機能していない可能性があります。それにもかかわらず、クライアントエラーの処理は、サーバーエラーの処理に似ています。
3。サーバーで作成されたクライアントプログラムコード
ASPエラーページルールの特別な例外としてエラーが発生したとき(エラーが発生する場所について)ASPエラーページルールに対応することは、ASPプログラムコードを使用してサーバー上にクライアントプログラムコードを動的に作成することです。たとえば、ASPで評価操作を実行し、データをクライアントで実行しているスクリプトコードに渡すことをお勧めします。最も簡単な方法は、データを変数としてスクリプトコードに挿入することです。
<%
'ServerVariablesコレクションからサーバーの名前を取得します
strservernameinasp = request.servervariables(server_name)
%>
<スクリプト言語= jscript runat = client>
<! - 古いブラウザからコードを非表示にします
var strservername = <%= strservernameinasp%>;
…
alert( 'サーバー名は:' strservername);
…
//コードを隠すのを停止します
- >
</script>
クライアントでは、ASPがこのページを処理した後、あなたが得るものは次のとおりです。
<スクリプト言語= jscript runat = client>
<! - 古いブラウザからコードを非表示にします
var strservername = wroxbox;
…
alert( 'サーバー名は:' strservername);
…
//コードを隠すのを停止します
- >
</script>
Runat = client属性は無視できますが、このアイテムを追加すると、コードが実行されているASP Webページを表示すると、明確にすることができます。
このようにして、サーバー側のデータベースから特定の場所のクライアント配列にデータを追加する場合は、次のプログラムを使用して実装できます。
<スクリプト言語= jscript runat = client>
<! - 古いブラウザからコードを非表示にします
var arrbooks = new Array(10)//最高の利用可能なインデックスは
<% 'ASP処理の開始
intindex = 0
{いくつかのレコードセットの最後ではない}
strtitle = {データベースレコードからタイトルを取得}
Response.write arrbooks [&cint(intindex)&] = '_
&strtitle& '; &vbcrlf
intindex = intindex 1
{データベースの次のレコードに移動}
ループ
…
ブックタイトルの配列でクライアントに何かをする
…
//コードを隠すのを停止します
- >
</script>
サーバーサイドASPプログラムコードによって生成されたこのクライアントコードは、クライアントが実行されているときに一連の本のタイトルを作成します。同時に生成されるクライアントスクリプトエラーは、ブラウザのエラーダイアログボックスに表示されます。エラーの理由は、Arrbookにちなんで名付けられた配列がクライアントで実行されるときにJavaScriptコードによって作成され、9冊の本のタイトルのみを受け入れることができるためです。サーバー側のコードは、ソースデータベースのレコードの数によって決定される9つ以上の本のタイトルを生成する可能性が最も高くなります。これは、次のクライアントコードに相当します。
<スクリプト言語= jscript runat = client>
<! - 古いブラウザからコードを非表示にします
var arrbooks = new Array(10)//最高の利用可能なインデックスは
arrbooks [0] = 'instant javascript';
arrbooks [1] = 'Professional ASP 3.0プログラミング';
arrbooks [2] = 'Ado 2.5プログラマーリファレンス';
…
等
…
arrbooks [9] = 'ウェブマスターのASPテクニック';
arrbooks [10] = 'ASPプログラマーリファレンス'; // < - クライアント側エラーはここで発生します
arrbooks [11] = 'adsi cdoプログラミング';
arrbooks [12] = 'プロフェッショナルMTSおよびMSMQプログラミング';
…
ブックタイトルの配列でクライアントに何かをする
…
//コードを隠すのを停止します
- >
</script>
このページは、修正後にのみ適切に機能します。配列のサイズを増やすか、データベースからレコードの数を制御することで増加させることができます。
7.3エラーを防ぎます
上で発生する可能性のある異なるタイプのエラーを見てきましたが、エラーを探しているように感じます。プログラムにエラーを導入しないようにする方法に関するいくつかの考慮事項を以下に示します。書かれたプログラムにエラーがないことは保証されていませんが、ここに要約されている多くの手法が要約されています。
共有:ASPの動的WebページをHTM静的ページに変換する方法しばらく前に、ASPページは多くの訪問者がいて、頻繁に変更されていなかったため、実行が非常に遅く、頻繁に修正されていなかったため、静的にするにはあまりにも怠zyでした。サーバーを変更するためにそれをダウンロードするたびに、ASPページをHTM静的ページに変換する方法を見つける必要がありました。私はこれを見たことがあります