ApacheとIIS5では、Ajaxから帰ってきたデータサイズが違う件

Facebooktwitter

プルダウンが3セットぐらいあって、上のプルダウンで選択されたものによって、次のプルダウンのリストが動的に替わるやつってよくありますよね。
昔は全部の組み合わせの配列を予めソースに埋め込んでonChangeで切り替えてたんですが、Ajaxが流行りだした頃から、都度サーバから次のリストを取り出すようにしました。
そっちのほうが全然コードが簡単だし、phpでJavaScriptを動的に書く必要もないですから。

で、今回はプルダウンが2~3セットあって、2つ目の選択内容によって、3つ目のプルダウンが必須だったり、必須じゃなかったりします。
で、2つ目のプルダウンが選択されたときに、3つ目のプルダウンに入る選択肢が何もない場合は必須でなく、何か帰ってきたら必須というロジックにしました。
つまり、

if (data.length) {
    //ココにデータが帰ってきた時の処理。

}

Apacheでは普通に動いていたのに、いざお客さんのところで納品のとき、ここの分岐がうまくいきません。
そもそも、IE6では、プルダウンのdisabledのプロパティを変更するjQueryの関数もうまく動いていなくて、
例:$(‘#sOrg2’).attr(“disabled”, true);が使えない

何が原因かしばらく悩みました。

結局、いろいろ切りわけた結果、プラウザの違いというのは排除され、残るはサーバしかないという結論に達しました。調べてみると、何も無い時にApacheからは0バイトのデータが送られるのに、なんでかIIS5からは1バイトのデータが送られているのが分かりました。

他の部分は全然問題なく動いていただけに、まさか最後にこんな細かい仕様の違いにハマるとは思いませんでした。しかもたった1バイトの違いで。。。