@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

IEでサーブレット×Ajax.updaterが動かない

1
投稿者投稿内容
Nig
会議室デビュー日: 2008/08/31
投稿数: 7
投稿日時: 2009-03-26 17:42
いつもお世話になっております。
まだ不慣れなためおかしい表現等あるかもしれませんが
宜しくお願いいたします。

ajax.updaterを使用して<div>要素のページの差し替えを行おうと思っているのですが、
宛先のURLとしてサーブレットを指定し、その中で転送を行っている場合
FireFoxだと正常に動作するのですがIEだと動作しません。
IEで動作させるための情報をお持ちでしたらご教授いただけないでしょうか?

■環境
Apache 2
Tomcat 6.0.16
Java 1.6.0_06
Struts 1.1
PostgreSQL 8.6
OS:Windows XP SP2

■状況
Tomcatで簡単なWebアプリケーションを作成するとし、
@sample.jsp内にajaxを記述

 --------------
【sample.jsp】
<a href="#" onclick="new Ajax.Updater('test', 'TestClass', {method:'get', asynchronous:true, evalScripts:true}); return false;">AJAXテスト</a>
<div id="test">
</div>
 --------------

ATestClass内ではtop.jspへの転送を行っている
 --------------
【TestClass.class】
public class ListMemos extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {



getServletContext().getRequestDispatcher("/top.jsp").forward(request,response);
}
}
 --------------

Bsample.jspにアクセスし、
リンクをクリックするとIEでのみ、何も画面が変化しない。

※URL部にサーブレットでなく、普通のhtml等を指定した場合はIEでも正常に動作する
※ajax.updaterでなく普通のリンクとしてならURL(href)部にサーブレットを指定していてもIEで正常に動作する

以上です。
宜しくお願いいたします。


[ メッセージ編集済み 編集者: Nig 編集日時 2009-03-26 19:42 ]
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2009-03-26 18:08
<div>要素内に<select>タグがありませんか?

http://support.microsoft.com/kb/276228

もしかして参考になるかと思いまして。
検討違いかもしれません。
Nig
会議室デビュー日: 2008/08/31
投稿数: 7
投稿日時: 2009-03-26 19:49
ジン様

一応、ターゲットとなる<div>要素の中身は空にしています。

いただいたURLを見てみましたが
私の方はURL部で指定しているのがサーブレットでなければ
IEでも正常に動くので若干違う現象かと思いました。

 <a href="#" onclick="new Ajax.Updater('test', 'top.html', {method:'get', asynchronous:true, evalScripts:true}); return false;">AJAXテスト</a>

 ↑であればIEでも動く。

早速のご回答有難うございました。
Nig
会議室デビュー日: 2008/08/31
投稿数: 7
投稿日時: 2009-03-27 14:40
お世話になっております。
自己解決とまではいかないのですが
進展がありましたのでご報告いたします。

宛先jspファイル内の文字コード指定を変更することで
IEでも動作することができました。

【top.jsp】
OK:<%@ page contentType="text/html; charset=Shift_JIS" %>

NG:<%@ page contentType="text/html; charset=Windows-31J" %>
--------------------

これでひとまず動くようにはなりましたが、
何故Shift_JISにするとajax.updaterが動作するようになるのかはまだ分かりません。
またShift_JISでは「〜」などの文字化けもあったりなど、
可能であればWindows-31Jで作成したいと思っています。

こちらでも色々と調べているところですが、
もしWindows-31Jで動かす方法、またはShift-JIS使用時の文字化け対策を
ご存知の方いらっしゃいましたらご教授の程宜しくお願いいたします。


[ メッセージ編集済み 編集者: Nig 編集日時 2009-03-27 14:40 ]
tama
会議室デビュー日: 2005/08/24
投稿数: 16
お住まい・勤務地: 焼売の国。ベイブリッジ見えません。
投稿日時: 2009-03-27 15:09
IEはいくつですか?

関係あるかわかりませんが
こんな問題があるみたいです。

Windows-31Jを理解しないIE
http://www.orquesta.org/takegata/Article/ArticleView.jsp?article_id=1
Nig
会議室デビュー日: 2008/08/31
投稿数: 7
投稿日時: 2009-03-29 13:37
ご回答ありがとうございます。

IEは6と7で同現象が確認できています。
いただいたURLですが、
簡単に試してみただけでは、まだ解決には至りませんでした。
jspで
<%@ page contentType="text/html; charset=Windows-31J"%>
とすることでもうNGとなるように見えます。
(metaタグが有効になっていない)

ただ、かなりヒントにはなりそうです。
それ以前に文字コードのこと自体があまりに勉強不足なので
もう少し遡ってみます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)