- - PR -
JspでのJavaScriptのエラーについて
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-06 18:02
masaさん、マーサさん本当にありがとうございます。
やはり要求と応答は1対1なんですね。かなり勉強になりました。 問題のJSPの部分を必要そうな部分だけ抜粋してみました。長くて申し訳ありません。 ここのダウンロードのボタンを押す前に表示ボタンは正常に動作します。 ダウンロードボタンを押して表示ボタンを押すと『アクセスが拒否されました』という エラーが表示されます。 <SCRIPT type="text/javascript"> <!-- function chkAddress(){ if(!checkNull(document.frm.add_cd,'住所コード')) { return false; } if(!checkNull(document.frm.address,'住所')) { return false; } document.frm.submit(); return true; } var result; function checkNull(obj,msg){ if(obj.value==''){ alert(msg + 'が入力されていません。 '); obj.focus(); return false; } return true; } //--> </SCRIPT> </HEAD> <BODY> <FORM action='testservlet' method='post' name='frm'> <TABLE> <TR> <TD align='right'><FONT>住所コード</FONT> <TD><INPUT type='TEXT' name='add_cd' size='5' maxlength='5'></TD> </TR> <TR> <TD align='right'>住所</TD> <TD><INPUT type='text' name='address' size='1' maxlength='1'></TD> <TD><input type='button' value='表 示' onclick='chkAddress()'></TD> <TD><INPUT type='button'name='download' onclick=location.href='/downloadservlet' value='ダウンロード'></TD> </TR> </TABLE> </TD> </TR> </TABLE> </FORM> 1.IEのセキュリティレベルを確認する。(Scriptが無効になっていないか?) IEのセキュリティは中でScriptは有効になっております。 2.test.csvの出力先を確認してみる。 (パス、ディレクトリ、ファイルの存在及びアクセス属性) 出力先は、c:\を指定しておりアクセス属性も問題ないと思います。 3.setHeaderのfilenameをパス付で記述してみる。 パス付きで記述してみたのですが同じ現象です。 以上よろしくお願い致します。 | ||||||||||||||||||||||||
|
投稿日時: 2005-07-06 19:13
気になる部分があります。
まず、
actionをパス指定で記述してみてください。 ※動作時にパスが変更されると、そこで動作しようとする為。 次に、
location.hrefをしようしているのですが何故ですか? 何処かのサンプルを参考にしたのでしょうか。。。 表示とダウンロードを別FORMにしてしまうやり方の方がスッキリとしますね。 (JavaScriptでsubmit先を変えても良いですが) ------------------------------------ <FORM action='/testservlet' method='post' name='frm'> ・・・省略・・・ </FORM> <FORM action='/downloadservlet' method='post' name='frm_dl'> <INPUT type='button'name='download' onclick='submit()' value='ダウンロード'> </FORM> ------------------------------------
このときにエラーの詳細が出ていませんか? IEなら左下のマークで詳細を表示出来たかと。。。(JavaScriptのエラーなんですよね?) 後、ダウンロード後のページのソースを確認してみて下さい。 PS 申し訳ない・・・今更なんですが、環境も教えて貰えますか ![]() | ||||||||||||||||||||||||
|
投稿日時: 2005-07-06 19:41
location.hrefが怪しい・・・ マーサさんが書いて下さったように以下の形に変更すれば直るよう な気がします! ------------------------------------ <FORM action='/downloadservlet' method='post' name='frm_dl'> <INPUT type='button'name='download' onclick='submit()' value='ダウンロード'> </FORM> ------------------------------------ | ||||||||||||||||||||||||
|
投稿日時: 2005-07-07 10:32
パス指定を記述してみたのですが、同じようにJavaScriptでエラーになってしまいます。
はい。サンプルを参考にしました。location.hrefを使用するとまずいのでしょうか?
以下のように修正してみたのですが、同じようなエラーになってしまいます。 <SCRIPT type="text/javascript"> <!-- function chkAddress(){ if(!checkNull(document.frm.add_cd,'住所コード')) { return false; } if(!checkNull(document.frm.address,'住所')) { return false; } document.frm.submit(); return true; } var result; function checkNull(obj,msg){ if(obj.value==''){ alert(msg + 'が入力されていません。 '); obj.focus(); return false; } return true; } function submitdl() { document.frm.action = '/test/downloadservlet'; document.frm.submit(); } //--> </SCRIPT> </HEAD> <BODY> <FORM action='/test/testservlet' method='post' name='frm'> <TABLE> <TR> <TD align='right'><FONT>住所コード</FONT> <TD><INPUT type='TEXT' name='add_cd' size='5' maxlength='5'></TD> </TR> <TR> <TD align='right'>住所</TD> <TD><INPUT type='text' name='address' size='1' maxlength='1'></TD> <TD><input type='button' value='表 示' onclick='chkAddress()'></TD> <TD><INPUT type='button'name='download' onclick=submitdl() value='ダウンロード'></TD> </TR> </TABLE> </TD> </TR> </TABLE> </FORM>
『アクセスが拒否されました』というのが詳細表示で確認したエラーメッセージです。 更に詳細に書くと ライン:18 文字:3 エラー:アクセスが拒否されました。 コード:0 URL:http://--------------/test/testservlet
ダウンロード後のページのソースを確認する上で気をつけなければならない点はありますか?
本当に申し訳ありませんでした。一番最初に環境をお伝えするべきでした。 JAVA:JDK1.3.1 サーバ:Oracle9iAS 開発環境:JDeveloper 以上です。申し訳ありませんがよろしくお願い致します。 | ||||||||||||||||||||||||
|
投稿日時: 2005-07-07 11:03
[quote]
location.hrefは現在のURLを示しているものです。 そこへURLを代入するとそのページに遷移します。 FORMのactionはmethodに指定した方法で実行された時の動作となります。 サーバー側へ送られる情報と言うのは、<FORM>〜</FORM>間の情報となります。 つまり、情報量が多くなれば多くなるほど、余計なデータを送信してしまう(メモリを使用する、処理が遅くなる)事になります。 ※詳しくはHTMLやJavaScriptのドキュメント、他の方のノウハウがネット上に転がっているはずなので、探してみてください。
ここですね、URLが物凄く怪しい物になっていますね。 では、document.frm.action = 'HTTP://xxxxxxx/test/downloadservlet'; と、言う感じにサーブレットを相対でなく絶対パスで指定して見ましょう。 それで解決すると思います。
ダウンロード前とダウンロード後で相違点が有るか無いかをチェックするくらいですね。 | ||||||||||||||||||||||||
|
投稿日時: 2005-07-07 11:27
target を指定しましょう。
私はフレーム分割されていないものは、内部に非表示の iframe を切り その iframe を target 指定してダウンロードさせています。 フレーム分割されているものは、_self とならないフレームを指定。 理屈的に理解しているのではないですが 反射させてファイルを出力しているというイメージでやっています。 | ||||||||||||||||||||||||
|
投稿日時: 2005-07-07 11:31
location.hrefについてはもっと勉強してみます。
絶対パスで指定してみたのですが、同じエラーになってしまいます。。。 一つ気になったのですが、ダウンロードのボタンのsubmitもJavaScriptにしましたよね。 それでダウンロード後にもう一度ダウンロードをすると同じエラーが表示されるように なりました。 そのときのエラーの詳細を見てみるとURLの部分が URL:http://--------------/test/testservlet このURLで表示されています。 URL:http://--------------/test/downloadservlet となると思ったのですが? 表示の方は、 URL:http://--------------/test/testservlet が表示されています。
確認しましたが、特に違いはありませんでした。 本当に申し訳ありません。。。 | ||||||||||||||||||||||||
|
投稿日時: 2005-07-07 15:11
未記入さんありがとうございます。
すみません。僕に理解力がないのかよくわからない部分があります。 まず、JSPをiframeで囲いますよね?そのiframeにtargetを指定して ダウンロードを行うというのがよくわかりません。 もう少し詳細に教えていただけると助かります。 |