2008-09-04

IEでjQueryを利用してxmlをパース

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
サーバからxmlを受け取るajaxアプリを最近firefoxで確認しながら作っていたのですが、ふとIEで見てみたらxmlのパースがうまく出来ていないことが判明しました。

どうもIEでは、明示的にヘッダーに
Content-Typeにtext/xml; charset=utf-8としてあげないとだめみたいです。

なので、google app engineでxmlを返す際には
きちんと以下のような感じでヘッダーを指定しないといけないようです。
self.response.headers["Content-Type"] = "text/xml; charset=utf-8"
self.response.out.write(template.render(path, template_values))

ちなみにクライアント側のコードは以下のような感じです。

function hogehoge(val) {
if (!confirm('よろしいですか?')) {
return;
}
$.ajax({
url: '/hogehoge/hoge?key=' + val,
type: 'GET',
error: cant_connect,
success: get_xml_message
});
}

function cant_connect() {
alert('サーバーと接続できませんでした');
}

function get_xml_message(xml) {
var message;
$(xml).find('message').each(function(){
message = $(this).text();
});
alert(message);
}



ちなみにIEでは、きちんとheaderでContent-Typeを指定してないと
$(xml).find('message').each(function(){
の部分がうまく動いてくれないのでした。
コメントを投稿