

お世話になります、JavaScript初心者です。
GET送信によるパラメータを他ページに受け渡して表示をさせると
各ブラウザで以下のような現象が起こります。
□Windows
・IE8:正常に表示
・IE7:正常に表示するがエラーが表示される
(エラー内容:「'document.form1.courseno.value'はNullまたはオブジェクトではありません。」)
・IE6:表示されずにエラーが表示される
・FF/chrome:文字化け
□Macintosh
・safari/FF:文字化け
様々なサイトのソースを参考に自分なりに書いたのですが、
初心者なものでどこが原因なのか見当もつきません。
以下に該当するソースを明記いたしますので、ご教授いただければ助かります。
/* ↓↓↓パラメータを渡すページ↓↓↓ */
<script type="text/javascript">
function send() {
var courseno=course=day=price="";
/* コード変換 */
courseno=escape(document.form1.courseno.value);
course=escape(document.form1.course.value);
day=escape(document.form1.day.value);
price=escape(document.form1.price.value);
}
</script>
<body>
<form action="#" method="get" name="form1">
<p><a href="get.html?courseno=4074&course=水晶岳岳&day=12月25日&price=93,000円" onclick="send();">お申込み</a></p>
</form>
</body>
/* ↑↑↑パラメータを渡すページ↑↑↑ */
/* ↓↓↓パラメータを表示させるページ↓↓↓ */
<script type="text/javascript">
function pramWrite() {
var pram=location.search;
/* パラメータがない時は処理しない */
if (!pram) return false;
/* 先頭の「?」を削除して「&」で分割し配列へ */
pram=pram.substring(1);
var pair=pram.split("&");
var i=temp="";
var key=new Array();
for (i=0; i < pair.length; i++) {
/* 配列の値を「=」で分割 */
temp=pair[i].split("=");
keyName=temp[0];
keyValue=temp[1];
/* キーと値の連想配列を生成 */
key[keyName]=keyValue;
}
var courseno=course=day=price="";
courseno=unescape(key["courseno"]);
course=unescape(key["course"]);
day=unescape(key["day"]);
price=unescape(key["price"]);
document.form1.pram.value="コースNO:"+courseno+"\n"+"コース名:"+course+"\n"+"出発日:"+day+"\n"+"旅行代金:"+price+"\n";
}
</script>
<body onload="pramWrite()">
<p>受け取ったパラメータを表示</p>
<form name="form1" action="#">
<textarea name="pram" cols="40" rows="4" readonly="readonly" wrap="off" style="border:0;overflow:visible"></textarea>
</form>
</body>
/* ↑↑↑パラメータを表示させるページ↑↑↑ */
以上、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ごめん!もうねむくて、かいとうではないのだけれど
var courseno=course=day=price="";
って、coursenoいがいは、ぐろーばるだよ!
unescape()は廃止への・・・・
なので
encodeURIComponent()とか decodeURIComponent()
に。
https://developer.mozilla.org/ja/Core_JavaScript …
<form>のnameはidに。
document.form1.pram.valueを
document.forms['form1'].elements['pram'].valueとかに
この回答への補足
回答どうもありがとうございます。
指摘いただいた各グローバル変数を「var course="";」という風にそれぞれローカル変数にいたしました。
各コード変換の箇所も
「var courseno=encodeURIComponent(courseno);」
「courseno=decodeURIComponent(key["courseno"]);」
とそれぞれ変更したところ、無事に表示されました!!!
ただIE6だけはエラーが表示されるのですが、
これは複数のIEを共存させる「Multiple_IE」のせいなのでしょうか?
それとも今回のJavaScriptに問題があるのでしょうか?
もし原因などが分かるようでしたら指摘してもらえると助かります。
No.2
- 回答日時:
> <a href="get.html?courseno=4074&course=水晶岳岳&day=12月25日&price=93,000円"
JavaScriptとか関係有りません。
URLエンコードをブラウザに任せる場合は、「(UTF-8やShift_JISなどの)文字コード不明データ」として、文字コードの変換を行って下さい。
<a href="get.html?%48">などとあらかじめ%nn形式のURLエンコードをしておけば、
そのまま送信されますので文字コードの判別が不要になります。
回答どうもありがとうございます。
そうですね、あらかじめURLエンコードしておけば良いのですが、
リンク設定をする人たちのスキルの問題があり、
分かりやすくするため日本語でパラメータをと考えております。
他にもっと良い方法があるのかもしれませんが、
なにぶんJavaScript初心者なもので、この方法しか思いつきませんでした。
また機会があればアドバイス宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptの変数をJavaの変数...
-
onchangeイベントを強制的に発...
-
innerHTML内では改行は禁止?
-
ボタンかリンクをクリックする...
-
コマンドボタンでショットカッ...
-
親ウィンドウのフォームの値を変更
-
return trueとreturn falseの用...
-
【javascript・PHP】プルダウン...
-
<input>の選択肢をプルダウンメ...
-
Formのシリアライズができない
-
【jQuery】input nameの文字列...
-
至急!GetElementById でtdの...
-
データベースの値を判断してラ...
-
ラジオボタンが選択されたらテ...
-
confirm()で表示したダイアログ...
-
Javascript ポップアップウィ...
-
複数のチェックボックス項目が...
-
Javascriptに条件分布ついて(再)
-
JavaScriptでテーブルの行入れ替え
-
チェックボックスのON/OFFでVal...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
javaScriptの変数をJavaの変数...
-
VB.NETで<Input>タグ、<text...
-
iOSのみダブルタップが必要
-
JavaScriptのfileオブジェクト...
-
追加ボタンを押した際に ok ボ...
-
onClickがinput type="image"だ...
-
innerHTML内では改行は禁止?
-
javascriptでチェックボックス...
-
パラメータから取得した文字をH...
-
クリックさせたいが、click()が...
-
JSPファイルにJavaScriptを埋め...
-
ボタンで配列に代入
-
任意の<DIV></DIV>の中に計算結...
-
javascript教えてください
-
WordpressのCocoonというテーマ...
-
ボタンかリンクをクリックする...
-
HTMLのテキストボックスへのド...
-
onclickが動作しない
-
複数のボタンに対するActionと...
おすすめ情報