Ajax用のXML出力の際のcontent type

勉強がてら、Ajaxを使ったサイトを作り始めました。


PHPで出力モジュールを作ってXMLを返すってのをやるんですが、
ここでちょっとはまった。


クライアント側で、
responseTextはちゃんと受け取れてるのに、responseXMLがnullになるっていう状態。




しかも、PHPの出力のhttp headerにはちゃんと「Content-type:text/xml」を指定してるのに。
IEfirefoxはcontent-typeをきちんと指定してあげないと、responseXMLがnullになる)


とはいえ、content-typeをjsで見てみたら、やっぱりふつーに「text/html」になってました。
でも、PHP側でheader()前に出力してるところなんて無いんですが。。。
PHPは文字列等を出力すると、勝手にhttpヘッダーをつけてくれます)


結論としては、
出力文字コードに問題があったっぽいです。
動かしてるレンタルサーバは内部文字コードEUC-JPで、出力はpass(自動変換なし)の設定でした。
そこで、

mb_http_output("UTF-8");

を出力しているPHPの方の頭に入れて、出力を変換するようにしてあげたら、
ちゃんとcontent-typeをクライアント側で認識できるようになりました。
 →responseXMLを取れるようになりました。


mb_convert_encoding()でマルチバイトだけでもUTF-8にしとけば、
なんとかなるっしょ的な適当な考えが甘かった。
っていうか、どういう理屈だったのか、まだよくわかってないです><
アホなこと書いてたらごめんなさい><