![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
フォーム部品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>
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?08b1c8b)
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
16進n桁の文字列変換の方法は?
-
ページ内文字列の置換について
-
ページ更新後も保持される変数...
-
<a href="#" …>の意味を教えて...
-
javascriptとApacheの設定
-
bodyにidをつける理由は何ですか?
-
WEB上で編集できない、スク...
-
スマホ上で、左右スワイプで次...
-
ウインドウの後ろに隠れている...
-
最初からツールバーなしでhtml...
-
別フレームのページが読み込み...
-
datepickerで日付の値を取得したい
-
light boxが上手く表示されない
-
getElementsByNameで要素が取得...
-
新しいウィンドゥを最大化で立...
-
JavaScript関数呼出し元の要素...
-
iPhone Safariの戻るボタンの挙動
-
metaタグのrefresh機能について
-
別ファイルのfunctionの読み込み方
-
javascript サーバーファイル有...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動的生成したscriptタグが実行...
-
ページ内文字列の置換について
-
document.getElementById
-
ページ更新後も保持される変数...
-
外部javascriptファイルをjavas...
-
location.hrefが動かない・・・
-
¥マークの検索について
-
document.writeの文字列が実行...
-
スクロールメニューが宣言を入...
-
1から100までの平方根を表示す...
-
UAによるリダイレクト
-
JavaScriptでJavaScriptを追加...
-
javascriptで変数を組み込みたい
-
history.back スクリプトオフ...
-
16進n桁の文字列変換の方法は?
-
外部jsからdocument.writeする...
-
書いたクッキーを読み出してメ...
-
CGIフォーム一定時間過ぎる...
-
ランダム音声と正解・不正解の表示
-
「document.images.src =」につ...
おすすめ情報