フォーム部品type=text の一行テキスト領域で入力した単語を、inputwordkensaku.cgiには辞書検索させ検索結果をCookieに書かせるところまでやらせ、そのCookie データをJavaScript で読み、あらかじめ設置しておいたフォーム部品であるメニューにセットしようとしているのですが、うまくいきません。
cgiはエラーが出ずに動きますが、Cookie への書き込みができたか確認しようにも
<INPUT size="20" name="inputbox" type="text" onChange = "inputwordkensaku.cgi">のイベントにづけて、このCookie を読み出すための次のようなJavaScriptのプログラムをどこに書きつなげたらよいのかが分かりません。よろしくお願いいたします。
<script type="text/javascript"><!--
function set__resultsData(){
//クッキーに格納されたデータを読み出して、
//オプションメニューと隠しフィールドにセットする
getc=document.cookie+";"; //クッキーを読む
x1=getc.indexOf("resultdata");
if (x1!=-1) {
tem1=getc.substring(x1-1);
x2=tem1.indexOf("=");
x3=tem1.indexOf(";");
urls_data0=tem1.substring(x2+1,x3);
urls_data=unescape(urls_data0);
CkOpt=urls_data.split("<>"); //クッキーデータの分析
for (i=1; i<CkOpt.length; i++){
longlinestr = CkOpt[i-1];//これは見出し語の原型
pp = longlinestr.indexOf(" /// ");
midashigo = longlinestr.substr(0, pp-1);
yakugo = longlinestr.substring(pp+5);
document.form1.hiddenlist.options[i] = new Option();
document.form1.hiddenlist.options[i].text = yakugo;
//↑隠しリストに辞書の訳語部分のみをセットする
document.form1.wordlist.options[i]= new Option();
document.form1.wordlist.options[i].text=midashigo; //見出し語のみをセットする
}}} // --></script>
No.1ベストアンサー
- 回答日時:
たびたび失礼します。
とりあえず、CGIで書き込んだCookieをHTML側で取得できるかどうかを確認する方法としては、Cookieを受け取る側のHTMLファイル上で、body以下に下記のソースを加えてみるのがよいのではないかと思います。
<script type="text/javascript"><!--
document.write(document.cookie);
//--></script>
このソースを加えると、この部分でCookieから取得した内容を加工なしに表示します。 これでCookieから取得したデータの内容が表示されますので、Cookieが保存できているかどうかと、Cookieから取得できるデータの内容を把握することができると思います。
質問文のソースにある関数ですが、呼び出す場合には呼び出したいところで、スクリプト内やイベントハンドラに関数名を指定すればよいと思います。
ページを読み込んだときに自動的にこの関数が実行されるようにしたい場合は、「<script type="text/javascript"><!--set__resultsData()//--></script>」というソースをform1のあとに追加する(form1の前に入れてしまうと、エラーになる可能性があります)か、bodyタグ内に「onLoad="set__resultsData()"」というイベントハンドラを追加すれば良いと思います。
ボタンクリックで実行させたい場合は、「<input type="button" value="データ取得" onClick="set__resultsData()">」といった感じのソースにすれば良いと思います。
ついでに、質問文中のソースですが、動作自体には問題はないかとは思いますが、
pp = longlinestr.indexOf(" /// ");
midashigo = longlinestr.substr(0, pp-1);
yakugo = longlinestr.substring(pp+5);
この部分は、
pp = longlinestr.split(" /// ");
midashigo = pp[0];
yakugo = pp[1];
このように書き換えても良いかと思います。 「配列名=文字列オブジェクト.split(***)」というソースは、split以下の括弧内の文字列を区切り文字として、文字列オブジェクトをそこで分割し、前から順に配列の中に格納する処理を行います。
あと、質問文中のソースを以前に回答したソースと組み合わせる場合は、変数名や配列名が重複していると、予期しない動作をすることもあるかもしれません。 もし予期しない動作が出た場合は、変数名や配列名が重複しないように書き直すのが良いかもしれません。
なお、Cookieは異なるディレクトリにあるファイル同士では共有できない場合もあります。 もし異なるディレクトリにおいてあるファイル同士でCookieのデータを共有したい場合は、Cookieの情報の中にpathを保存しておく必要があるかもしれません。
とりあえず、今のCGIとHTMLが同じディレクトリ内に保存されている場合には問題はないと思いますが、別のディレクトリにそれぞれが保存されていて、うまくCookieのデータが渡っていかない場合には、こちらの点についても見当が必要かもしれません。 一応、念のための情報として…
参考になれば…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
document.getElementById
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
function の return 値を表示し...
-
日替わりメッセージの表示
-
ページを表示すると同時に複数...
-
getElementsByNameで要素が取得...
-
submitボタンで他のフレームを...
-
新しいウィンドゥを最大化で立...
-
子フレームの自動リロードは可...
-
ウィンドウ名の設定
-
ウインドウを縮小しても文字を...
-
SQLのWHEREで全てを質問する方法
-
ホームディレクトリを示すチル...
-
別ファイルのfunctionの読み込み方
-
undefinedが表示されてしまう
-
Vbscriptで自分自身のウィンド...
-
iframeの中から親ページをスム...
-
Webサイトを表示時にタイトルの...
-
相対パスと絶対パスの速度
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptで変数を組み込みたい
-
CGIフォーム一定時間過ぎる...
-
書いたクッキーを読み出してメ...
-
明日の日にちを表示するときは
-
カウントダウンとカウントアッ...
-
動的生成したscriptタグが実行...
-
HTML画面上で文字の大きさを変...
-
¥マークの検索について
-
特定のURLからの訪問者を入室禁...
-
ホームページを見る度にTOP画面...
-
UAによるリダイレクト
-
変数に入れた文字列をindexOfで...
-
HPビルダーで『最終更新日時』...
-
Cookieの回数で閲覧制限、javas...
-
特定URLからの遷移後、指定ULR...
-
ランダム音声と正解・不正解の表示
-
document.getElementById
-
ホームページに定休日のカレン...
-
document.writeの文字列が実行...
-
外部javascriptファイルをjavas...
おすすめ情報