フォーム部品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ランキング
-
ページ内文字列の置換について
-
<a href="#" …>の意味を教えて...
-
pythonのWebスクレイピングでfi...
-
ユーザーが更新ボタンを押さな...
-
乱数を一定時間毎に表示させた...
-
base64encodeでの文字化けについて
-
リンクに飛ばない・・・
-
インラインフレーム内のスクロ...
-
jQueryが開かない
-
onloadで2つの関数を設定したい
-
javascriptでbgmを自動再生する...
-
プルダウンメニューを別ファイ...
-
ランダムにページにアクセスしたい
-
HTMLソースからURLだけを抜き出...
-
マウスオーバーで文字にアンダ...
-
Canvasを使って描画して面積取得
-
bodyにwidth:100%をつける理由は?
-
JavaScript関数呼出し元の要素...
-
HTML <marquee>に...
-
フレーム内のiframeのデータの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1から100までの平方根を表示す...
-
javascriptで変数を組み込みたい
-
document.getElementById
-
ランダム音声と正解・不正解の表示
-
JavaScriptの入れ子
-
IEでiframe内のcookieを保持
-
動的生成したscriptタグが実行...
-
¥マークの検索について
-
history.back スクリプトオフ...
-
外部jsからdocument.writeする...
-
javascriptでの大文字小文字の区別
-
CGIフォーム一定時間過ぎる...
-
明日の日にちを表示するときは
-
ブラウザのアドレス欄に
-
HPビルダーで『最終更新日時』...
-
ブログ上で複数のjavaスクリプ...
-
書いたクッキーを読み出してメ...
-
ホームページ内に直接書込がしたい
-
JSによるリンク先の値の取得
-
カウントダウンとカウントアッ...
おすすめ情報