質問: jQuery.get()の書き方について質問させてください。 第1引数に「URL」(パス)を書くと思いますが、 この場合パラメータ付きのURLを書くことは不可能なのでしょうか? 1$.get( "XXX.zip", function( data ) { } , ); この場合は、function内に処理が入ります。 2$.get( "" + "?Id=" + Id, function( data ) { } , ); このようなパラメータ付きのアドレスを入力した場合、 function内に処理が入りません。 なお上記URLをブラウザのアドレス欄に入力した場合、 1の第1引数で指定したファイルのダウンロードが始まります。 後続処理のfunction内で受取ったファイルを元に処理したいのですが、 肝心の受取部分で現在躓いています。 【参考】jQuery公式サイト
回答: > > このようなパラメータ付きのアドレスを入力した場合、function内に処理が入りません。 > > > `success`コールバックが呼ばれない以上、エラーが発生していると考えるのか自然です。 `jQuery.get()`に限らず、常にエラー処理を行うべきです。 またデバッグも行うべきです。今回の`jQuery.get()`であれば開発者ツールなどで、どのようなリクエストが行われ、どのようなレスポンスが得られているのか確認できるはずです。 コメントより > > サーブレットが実行されて「200」の結果が返ってきた。 2コンソールタブにエラーに関する情報は出力されていない。 > > > jquery.getのページには`fail`メソッドが記載されていますが、あくまでもエラー処理を行わず、質問を通じて解決策を探る方針でしょうか? そうであればもっと情報を開示すべきです。 `"XXX.zip"`が動作するのに対し`"example.jp:7777/XXXXServlet/xxxx.zip"`が動作しないとすればAdditional Notesに書かれている > > * Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, port, or protocol. > > > の制約を受けている可能性も考えられますが、その場合、多くのブラウザーではコンソールにエラーメッセージが表示されます。表示されないとしたら、エラーを非表示にしている等の確認方法が間違っているかブラウザー依存の問題です。とりあえず使用されているブラウザーやアクセス先のアドレスを開示してください。 same origin policyについてはHTTP アクセス制御 (CORS)も参照してください。