- ベストアンサー
受け取ったパラメータが文字化け
お世話になります、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> /* ↑↑↑パラメータを表示させるページ↑↑↑ */ 以上、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
補足
回答どうもありがとうございます。 指摘いただいた各グローバル変数を「var course="";」という風にそれぞれローカル変数にいたしました。 各コード変換の箇所も 「var courseno=encodeURIComponent(courseno);」 「courseno=decodeURIComponent(key["courseno"]);」 とそれぞれ変更したところ、無事に表示されました!!! ただIE6だけはエラーが表示されるのですが、 これは複数のIEを共存させる「Multiple_IE」のせいなのでしょうか? それとも今回のJavaScriptに問題があるのでしょうか? もし原因などが分かるようでしたら指摘してもらえると助かります。