C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

JavascriptとVbscript混在のクラシックASP

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■102963 / inTopicNo.1)  JavascriptとVbscript混在のクラシックASP
  
□投稿者/ ASP初心者 (1回)-(2024/02/15(Thu) 16:51:12)

分類:[レガシ ASP] 

こちら初めて書き込みさせていただきます。
お聞きしたいことがタイトルに書ききれず、申し訳ありません。
教えていただきたいこととして、JavascriptとVbscript混在のクラシックASPにおいて、
Javascriptで値をセットしたワークの内容を、Vbscriptで定義したワークへの値の受け渡し方法を
ご教授いただけたらと思います。
Vbscript→Javascriptの値の受け渡しは、

strVBd = "hoge"

%>
<script language="JavaScript">
<!--
strJAVA = "<% = strVBd %>";
//-->
</script>
<%

上記で受け渡しを行えています。
その逆の、Javascript内で、Vbscriptで定義したワークへの値の受け渡しのやり方を教えていただけたらと思います。
よろしくお願いします。
引用返信 編集キー/
■102964 / inTopicNo.2)  Re[1]: JavascriptとVbscript混在のクラシックASP
□投稿者/ WebSurfer (2889回)-(2024/02/15(Thu) 18:24:08)
No102963 (ASP初心者 さん) に返信
>
> Javascriptで値をセットしたワークの内容を、Vbscriptで定義したワークへの値の受け渡し方法を
> ご教授いただけたらと思います。

ブラウザから Web サーバーにデータを渡してサーバー側で何らかの処理をしたい
ということですよね? どういうことをしたいのか書けませんか?

普通に考えて、ブラウザから Web サーバーにデータを渡すには、Web サーバー側
に Web サービスとか Web API などのデータの受け口を作って、ブラウザからは
XMLHttpRequest とか iQuery Ajax とか fetch API を使ってその受け口にデータ
を送信することになります。

そう言って分かりますか?

分かるとして、それで質問者さんのやりたいことができますか?
引用返信 編集キー/
■102965 / inTopicNo.3)  Re[2]: JavascriptとVbscript混在のクラシックASP
□投稿者/ smow nyan (1回)-(2024/02/15(Thu) 18:37:21)
No102964 (WebSurfer さん) に返信
> ■No102963 (ASP初心者 さん) に返信
> >
>>Javascriptで値をセットしたワークの内容を、Vbscriptで定義したワークへの値の受け渡し方法を
>>ご教授いただけたらと思います。
>
> ブラウザから Web サーバーにデータを渡してサーバー側で何らかの処理をしたい
> ということですよね? どういうことをしたいのか書けませんか?
>
> 普通に考えて、ブラウザから Web サーバーにデータを渡すには、Web サーバー側
> に Web サービスとか Web API などのデータの受け口を作って、ブラウザからは
> XMLHttpRequest とか iQuery Ajax とか fetch API を使ってその受け口にデータ
> を送信することになります。
>
> そう言って分かりますか?
>
質問者の書き方を見るに、それ以前の内部的なロジック上での単純なワークの受け渡しを聞いてるように見えるんだけど、どうなんでしょう質問者さん。
“A”の値を“B”へ渡す「B = A」をJavaScriptの記述から、vbscriptで定義したワークへの受け渡しの仕方を聞きたいってことかな?
勘違いならごめんなさい。
> 分かるとして、それで質問者さんのやりたいことができますか?
引用返信 編集キー/
■102966 / inTopicNo.4)  Re[3]: JavascriptとVbscript混在のクラシックASP
□投稿者/ WebSurfer (2890回)-(2024/02/15(Thu) 22:31:29)
No102965 (smow nyan さん) に返信
> ■No102964 (WebSurfer さん) に返信

> 質問者の書き方を見るに、それ以前の内部的なロジック上での単純なワークの受け渡しを聞いてるように見えるんだけど、どうなんでしょう質問者さん。
> “A”の値を“B”へ渡す「B = A」をJavaScriptの記述から、vbscriptで定義したワークへの受け渡しの仕方を聞きたいってことかな?

私に返信するのではなくて、あなたはあなたが質問の回答になっていると思うことを
質問者さんに回答してあげてはいかが?
引用返信 編集キー/
■102967 / inTopicNo.5)  Re[4]: JavascriptとVbscript混在のクラシックASP
□投稿者/ ふわ (1回)-(2024/02/16(Fri) 09:31:57)
No102963 (ASP初心者 さん) に返信
クライアントアプリ開発者が陥りがちな、1つのEXE内での変数同士のやり取り
みたいに考えていないでしょうか?
WEBシステムは、サーバとクライアントで全く別の2つのシステムを作って、
通信でやり取りをする形でイメージしてみてください。

例えば、サーバ側でASPの処理結果のHTMLをごっそりクライアントに送って、
クライアントでVBScriptで処理するとします。VBScriptでASPの変数を直接
参照はできません。通信で送られた処理結果のHTMLの中にあるデータのみ見れます。

まずは実現したい処理が、クライアントのみで解決するのか、サーバとの
通信を必要とするのか、本当に必要な処理なのかが分かる説明をしてください。
1つのEXE内での変数同士で頻繁にやり取りするような考え方では、不必要な
サーバクライアント間の通信が大量に発生することになりかねません。

引用返信 編集キー/
■102969 / inTopicNo.6)  Re[5]: JavascriptとVbscript混在のクラシックASP
□投稿者/ 魔界の仮面弁士 (3751回)-(2024/02/16(Fri) 17:28:22)
No102963 (ASP初心者 さん) に返信
> JavascriptとVbscript混在のクラシックASPにおいて、
Classic ASP の構成としては:
 サーバーサイド VBScript、サーバーサイド JScript、
 クライアントサイド VBScript、クライアントサイド JavaScript
などの組み合わせが考えられるわけですが、今回の構成は
 サーバー側の処理が VBScript
 クライアント側は JavaScript
のみの組み合わせだと思って良いのですよね? (念のための確認です)


クライアント側で VBScript を使うことは殆ど無くなりましたが(IE がほぼ駆逐されたため)、
それでもサーバー側で JScript(JavaScript) を併用することはありえるので、一応確認。

たとえば、VBScript 以外の言語機能(JScript の decodeURIComponent / encodeURIComponent など)を
サーバー側で利用したい場合などに、ASP 内で <script runat="Server" language="JScript"> を使ったり、
あるいは .wsc なスクリプト XML を GetObject("script:X:\hoge.wsc") 経由でロードして利用するなど。


> その逆の、Javascript内で、Vbscriptで定義したワークへの値の受け渡し
仕組み上、どうあってもクライアント側からサーバーへの通信は発生することになりますが、
クライアント側から送られてきた情報は、サーバー側では Request オブジェクト経由で拾えます。

クライアント側から document.cookie で書き込んで、サーバー側では Request.Cookies("〜") で
読み取る方法などありますが…流石にこの目的だけのために cookie を使うの不自然ですね。

サーバーとの通常の通信ということで、普通の HTML ページのやり取りして
<form> 等から submit して、Reqeust.Form("〜") で受けるとか、
URL のパラメーターに繋いでおいて、Request.QueryString("〜") で受けるといった
基本的なところから始めてみてはどうでしょう。この処理の流れは、
JS 側から XMLHttpRequest / ajax などでバックグラウンド通信する場合も同様です。

内容によっては、 XMLHttpRequest の .setRequestHeader("MY-HEADER", "value") で
HTTP 要求ヘッダーに書き込んで送出し、サーバー側ではそれを
= Request.ServerVariables("HTTP_MY_HEADER") で読み取るという手もあります。


> <script language="JavaScript">
> <!--
> strJAVA = "<% = strVBd %>";
> //-->
> </script>
> 上記で受け渡しを行えています。
それは簡略化したものですよね? 業務用途の場合には必ずしも十分とは言い切れないかと。
strVBd の中身に「"」や「\」などが混入していないことを保証できるなら構いませんが、
strVBd の中身が任意の文字列である場合は、何らかの無毒化処理(サニタイジング)が必要です。


とりあえず Replace 関数で特殊文字をエスケープ処理していた例。

<%
'rawString = "hoge"
rawString = "<div>" & vbCrLf & "ho&ge ""TEST"" " & vbCrLf & "hoge \ hoge</div>"

htmlString = Server.HtmlEncode(rawString)

jsString = Replace(Replace(Replace(Replace(Replace(rawString, "\", "\\"), vbCr, "\r"), vbLf, "\n"), """", "\"""), "'", "\'");

%><textarea rows="10" cols="40"><% = htmlString %></textarea>
<script language="JavaScript">
const strJAVA = "<% = jsString %>";
alert(strJAVA);
</script>

上記では、改行や「\」などを含んだ文字列を、
JavaScript の変数や HTML の内容として出力しています。

そのために、Replace 関数を繰り返し使っていますが、実際には他にもエスケープ処理を
施すべき文字もありますし、流石にコードの可読性も悪くなってしまいます。

そのため、HTML 出力用の Server.HtmlEncode メソッドのように、実際の運用では
JavaScript に渡すためのサニタイズ用関数を自作しておいた方が良いでしょう。

あるいはそもそも無毒化する必要が無いよう、変数値がとりうる範囲を仕様的に制限して、
そうした特殊文字が混入しないようにしておく(値の事前検査を施すなど)のも有効です。
引用返信 編集キー/
■102970 / inTopicNo.7)  Re[1]: JavascriptとVbscript混在のクラシックASP
□投稿者/ PANG2 (1回)-(2024/02/19(Mon) 00:18:59)
サーバーサイドVBScript

クライアントサイドJavaScript
の話ですか?
隠しフィールドで行う
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ