• ベストアンサー

VBScrpitで取得した値(trueまたはfalse)で、分岐条件をしたいのですが・・・

下記の参考ソースを見ていただきたいのですが、 dateFunc関数で得たboolean値をもとに、 真なら「success.asp」を、 偽なら「failure.asp」を、 呼び出したいのですが、 何故か両方の関数が呼ばれています。 何故なのでしょうか。 OS:Windows2000 Web:IE6 です。 参考ソース <SCRIPT LANGUAGE="VBScript"> <!-- recDate = dateFunc() If recDate = true Then <% Server.Execute "success.asp"%> Else <% Server.Execute "failure.asp"%> End If --> </SCRIPT>

  • burbe
  • お礼率35% (78/221)

質問者が選んだベストアンサー

  • ベストアンサー
  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.2

クライアント側のスクリプト内でサーバタグを書いても、 クライアント側に降りてから実行されることはありません。 実行後に生成したページがクライアントに投げられます。 >何故か両方の関数が呼ばれています。 上記の理由で先に実行された結果が降りるからです。 クライアント側で次ページを条件で分岐するなら、 素直に判断記述の中でlocation.replaceさせるのでは?

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

dateFunc()を呼び出すのはクライアント(すなわちWebブラウザ)ですので、サーバ側(すなわちIIS)で処理される<% Server.Execute %>は実行済みです。 dateFunc()をサーバ側で実行する必要があるかと。

関連するQ&A

  • 実行される順番について

    ボタンを押したら、「aaa.asp」を実行したいのですが、ボタンを押してないのに1番最初に「aaa.asp」が実行されてしまいます。 どこか悪いのか教えてください。 よろしくお願いします。 ------------------------------------------------- <HTML> <%@ LANGUAGE="VBScript" %> <BODY> <INPUT TYPE="BUTTON" VALUE="TEST" Onclick="Test"><br> </BODY> </HTML> <SCRIPT LANGUAGE="VBscript"> sub Test <% Server.Execute "aaa.asp" %> end sub </SCRIPT>

  • falseとtrue 0,1,-1 の意味が知りたいです

    こんにちは。 大分前からなんとなくしっくり行かないことがあります。 excel でのワークシートの関数vlookupなどの引数に true/false がありますよね。 絶対値の絶対のイメージがtrue・・の気分なのですが結果は逆でした。 IF関数では 真→true  偽→false だったと思います。 私はIF関数でのtrue/false のイメージはしっくりいきます。 vlookupはどーしても納得いくイメージが持てません。 どなたか教えていただけませんか?どんな風にとらえればいいのか。 しかも確かACCESSやVBAの中では true→-1 false→0 vlookupでは true→1 false→0 じゃなかったでしたっけ? こちらの考えも?? こっちの方は以前知り合いに説明を受けて一度は納得したのですが、 今はよくわからなくなってしまいました。 教えてください。

  • if関数のtrue、false省略について

    エクセル2010で関数貼り付けボタンをクリックして if関数を選びボックスの論理式に(例えばA1=1とかを)入力をします。 真の場合の所にカーソルを移動させると 下のコメントに「省略された場合、TRUEが返されます」とあります。 同じように偽の場合に行くと「省略された場合、FALSEが返されます」となっています。 ここで「真の場合はTRUE」で「偽の場合はFALSE」を返して欲しいので 両方とも省略してOKボタンを押すとエラーになってしまいます。 別に真の場合の所に「TRUE」、 偽の場合の所に「FALSE」と入力すれば結果は出て済む話なのですが、 ヘルプコメントに「省略した場合~」と書いている以上は 省略できて然るべきではないでしょうか? なぜ省略できないにも関わらず「省略できます」みたいな書き方をするのでしょうか? ご存知の方教えてください。

  • JavaScript内で得た値をVBScript内で使用する。

    こんにちは! ちょっと複雑なのですが、ご存知でしたら教えて下さい。 今VBScriptで、ADOを使用してデータベース接続をし、コンボボックス で一覧を選択できるようにしています。 ここで<SCRIPT LANGUAGE=javascript>を使用して _onchange()関数(コンボボックスの値が変更したら関数を実行する) でコンボボックスの値を取得します。 </SCRIPT> ↑この部分だけjavascriptで他はVBScript で、この関数で取得した値をVBScript内で使用したいのですが、 可能でしょうか?

  • <Script Language="VBSCRIPT" RUNAT="SERVER"> </script> と <% %>は違うの??

    ASP開発をしています。 あるASPでIncludeファイルで配列宣言 Dim gsABC(10)を宣言します。 Includeファイルの中身 <Script Language="VBSCRIPT" RUNAT="SERVER"> Dim gsABC(10) </script> そして、ASPファイルでその変数gsABC(0)を 使おうとするとエラーが発生します。 けれども、Includeファイルの中身を <% Dim gsABC(10) %> にすると正常に動きます。 2つは同じものだと思っていたのですが、 これによって違うものなのかと認識するように しなければと思ってますが・・・ どこが違うのか分かりません。 どなたか分かりやすく簡単でいいですから 説明して頂けないでしょうか? よろしくお願いします。

  • 別フォームの値を取得したい

    カテゴリーが、HTMLなのかASPなのか、判断がつかないので、とりあえず「その他」に投稿します。 説明が難しいので、わかりにくいと思いますが、よろしくお願いします。 (用語の使い方や表現が間違ってたらすみません) 一つの画面にフォームが二つあり、FORM1へsubmitすると、選択したファイルのダウンロードを行い、別ブラウザ上に表示します。画面は遷移しません。 FORM2へsubmitすると、別画面へ遷移して処理を行います。 別画面に遷移後、FORM1のselect部品のoption値を取得したいのですが、どうしたらいいでしょうか? selectでなければ、hidden属性の部品をFORM2内に設定しておいて、FORM2_OnSubmit()内でセットしてやればいいと思うのですが、selectだと配列になりますよね?(Request.Form("SELECT")(i)といった形式) selectのoption数は動的に変わるので、いくつあるかはsubmitするまでわかりません。 コーディングは、こんな感じです。 <script language="JavaScript"> function DLFunc(f){ ・・・(略)・・・ f.target = ""; f.submit(); } </script> <script language="VBScript"> Sub FORM2_OnSubmit() ・・・(いろいろ処理)・・・ End Sub </script> <form name="FORM1" method="POST" action="DL.asp"> <select name="SELECT" size="5"> <option value="1">ファイル1</option> ・・・(option数は動的に変わる)・・・ </select> <input type="button" value="ダウンロード" OnClick="DLFunc(this.form)"> </form> <form name="FORM2" method="POST" action="Next.asp"> <input name="XXX"> ・・・(以下略)・・・ <input type="submit" value="実行"> </form>

  • VBのBooleanはCではどんな方でしょうか? DLL

    元々、VB6のソースをCに書き直している最中ですが、 VBでintegerは Cではshortでよいのですが、VBでBooleanはCではどのように記述したらよいのでしょうか? 確かCは真が-1で偽が0だったと思いますが、それならば shortで定義して・・・ でうまくいくのでしょうか? VBから呼び出すCの関数のDLLを書いた事のある方、教えていただけますか? また、今の時代、DLLは古いでしょうか? だいぶ前のソースをいじくっております。

  • 思うように セッションの破棄 ができない

    ASPを使ったログイン機能を持ったページを作っています。 ログインしたときにセッションIDを使って直リンクを避けるような 機能を持たせたのですが、サーバーの負荷を避けるために、ログアウト ボタンを作って ログアウトボタンを押したらセッション情報を破棄 するようにしたら、どうもページを読み込んだときに すぐに破棄してしているようで うまくできません ソースは <%@ Language = "VBScript" %> 以下HTMLヘッダー類 <script language="JavaScript"> <!-- function owari(){ <% Session.Abandon %>//セッション破棄 parent.location.replace('../login/login.asp?stn=2');//ページ移動 } //--> </script> 以下HTMLのボディー <INPUT type="button" value="ログアウト" onclick="owari()"> 以下色々なソース ボタンを押したら JavaScriptを呼び出し 破棄してページ移動するように作ったのですが これ自体は問題なく作動するのですが、 <% Session.Abandon %>//セッション破棄 がはいると、なぜかページを開いたときに 呼び出してもいないのに 破棄されてしまっているようで、通常のページ移動もできなくなります セッション破棄の1行を抜くと 全てきちんと作動しますが これではサーバーのセッションタイムアウトまでメモリが残るから良くないのです。 また、VBScript内に Sub haki() Session.Abandon .. .. End sub として <script language="JavaScript"> <!-- function owari(){ <% haki %> } //--> </script> と言うようにしても、同じ不具合になります JavaScriptはfunctionにすると呼び出されるまでは実行されないと思います。 またVBScriptのSubプロシージャも呼ばれるまでは実行しないと思っています。 ただ、今の状態を見る限り、このあたりの認識が間違っているのかなと思っているのですが、 根本的な原因とその解決策が分からず困っています。 どなたかご教授くださいますと幸いです。 よろしくお願いします

  • ブラウザーからサーバ側のaspファイルを読み込む方法について

    クライアント側のVBscriptやJavaScriptなどのスクリプト 言語から画面を遷移しないでプログラム内でaspファイルを 呼びサーバ側での処理をした後にまたその後のプログラム を実行するような処理をしたいのですがどのように記述し たらよいのでしょうか? (クライアントのプログラム内でサーバ側のaspファイルの 関数を呼び処理の結果をクライアントのスクリプト言語に 反映させたいのですが。。。)

  • エクセルでの時間の大小関係

    A1というセルに 23:00 の数値が入っています。 それで、=IF(A1>"20:00","真","偽") という関数を 使っても 偽 と表示されます。 この式は間違っているのでしょうか? よろしくお願いします。