Ajax.requestで304Not Modifiedになって困った
JUGEMテーマ:JavaScript
なんだか最近好調更新中。今日の話題はprototype.js。もはやデファクトスタンダードの地位を確立したと思われる、javascriptのクロスブラウザライブラリです。
ajaxで非同期通信をサーバと行い、データを取得する場合、Ajaxオブジェクトを生成してrequestメソッドを発行するのですが、304 Not Modifiedが返ってきた場合、onCompleteに与えた関数オブジェクトがコールされませんのです。onFailure扱い。
これは困る。
で、結局以下のようにして解決しました。
requestHeaders: ["If-Modified-Since","Tue, 22 Nov 2005 14:00:00 GMT "]
requestメソッドの引数に、optionsパラメータがあるんですが、そこにhttpリクエストヘッダを書き込めるオプションがあるんです。で、304エラーが帰ってくる要因になっているIf-Modified-Sinceを古ーい日付にしておいたら、絶対200 OKが返ってくるって話ですな。超力技。