- ベストアンサー
何がいけないのでしょうか・・・?
html初心者です。 よろしければおつきあいください。 以下の4つのファイルを作ってみました。 (1)document.html <html> <head><title>action check</title></head> うまくいくでしょうか? <script lang="VBScript"> Document.Write ("ここがうごくとスクリプトの中") </script> テストです </html> (2)response.html <html> <head><title>action check</title></head> うまくいくでしょうか? <script lang="VBScript"> Response.Write ("ここがうごくとスクリプトの中") </script> テストです </html> (3)document.asp>>>>(1)の中身のまま拡張子を変えたもの (4)response.asp>>>>(2)の中身のまま拡張子を変えたもの 以上をhttpサーバーにアップして、表示させてみました。 すると(3)のみ うまくいくでしょうか? ここがうごくとスクリプトの中 テストです と表示されるのですが、残りの3つは うまくいくでしょうか? テストです と表示されます。 ここで質問です。 (あ)(1)、(2)、(4)の表示結果がなぜ、 (3)のようにならないのでしょうか。 (最初の意識としては(3)のような表示結果になること を望んで4つのファイルを作りました。) (い)(3)はうまく動いているようですが、 (3)の表示結果のようになるということは、 このファイルがおかれているサーバーは ASPが動くと考えて良いのでしょうか? わかりにくくて申し訳ありませんが ご教授いただけると幸いです よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)~(4)までの方法で実行してみたのですが…全部動きませんでした。 (1)、(3)は書き方次第で動きます。 <script lang="VBScript"> ではなく <script language="VBscript"> と打ったところ、動きました。(以下、動いたソース) languageをlangと略す方法は私は聞いたことなかったので… ----------------------- <html> <head><title>action check</title></head> うまくいくでしょうか? <script language="VBScript"> Response.Write ("ここがうごくとスクリプトの中") </script> テストです </html> ----------------------- 上記のソースはxxx.htmlでもxxx.aspでも動きました。 (2)と(4)に至っては、Response自体がVBScriptのオブジェクトに存在しないメソッドとして扱われる為、エラーになります。 VBScriptにはサーバー側で動くスクリプトとクライアント側で動くスクリプトが存在します。Document.writeはクライアント側で動くスクリプトの記述方法であり、Response.Writeはサーバー側で動くスクリプトの記述方法になります。(1)、(3)の書き方は、クライアント側で動くスクリプトの書き方になります。 (2)は無理ですが、(4)を動かすには以下のソースになります。 ------------------ <html> <head><title>action check</title></head> <body> うまくいくでしょうか? <script language="VBScript" RUNAT="Server"> Response.Write ("ここがうごくとスクリプトの中") </script> テストです </body> </html> ------------------ RUNAT="Server"がサーバー側で動くという意味になります。 実際に実行して、ブラウザからソースを表示して見ると分かると思いますが、(1)、(3)のソースは<script ~</script>まで表示されます。 ですが、(4)はサーバー側で実行した結果のみをブラウザに返しますので、ブラウザからソースを表示しても「ここがうごくと~」の文章しかソースには残っていません。 また、サーバー側で動くVBScriptは拡張子がaspの場合しか動きません。 サーバーで動くわけですから、ASP対応のサーバー(IIS等)でしか動きません。 質問者さんがアップしたサーバーはASP対応かどうかですが、Responseでのファイル(サーバー側スクリプト)の場合は動きませんが、Documentのファイル(クライアント側スクリプト)の場合はIIS以外(今回試したのはUNIXサーバー)でも動くようです(理由とかは面倒なので調べませんが…)。 クライアント側で動くスクリプトはIEの管轄になります。そしてサーバー側で動くスクリプトはIIS等の管轄になりますので、(3)でも動いたのはIE側のみで処理をするスクリプトだったからだと思います。 分かりづらい書き方ですみません。
お礼
>>(1)~(4)までの方法で実行してみたのですが…全部動きませんでした。 (3)も動かないのは、環境の違いもあるのでしょうか。 そうはいっても、回答を読ませて頂いた感じでは、こちらで動いたのは なにやら偶然のような気がしますが・・・ >>(1)、(3)は書き方次第で動きます。 >><script lang="VBScript"> >>ではなく >><script language="VBscript"> 了解しました。langと略するのはどこかで見た記憶があったもので ついいい加減に記述してしまいました。気をつけます・・・ >>(2)と(4)に至っては、Response自体がVBScriptのオブジェクトに >>存在しないメソッドとして扱われる為、エラーになります。 そうなんですか・・・。私のもっているVB解説本にも 記載はされていなかったのですが、なにせ入門書でしたので 書いてないこともあると思って 試しに作ってみたものだったので・・・ >>クライアント側で動くスクリプトはIEの管轄になります。 >>そしてサーバー側で動くスクリプトはIIS等の管轄になりますので、 >>(3)でも動いたのはIE側のみで処理をするスクリプトだったからだと思います。 なるほど。拡張子ASPで動いたからといってASPサーバーが正常に機能している わけではないのですね。 非常によくわかりました。 こちらの質問の書き方にも不手際があって、すみませんでした ご丁寧にありがとうございました。