405エラーは主に、POSTメソッドの使用が許されていない場所で、POSTメソッドを使用した場合に返される。
さくらインターネット等、CGIやSSI等のダイナミックコンテンツにしかPOSTメソッドが容認されていない場合に、
AjaxでXMLHttpRequestメソッド使った時にタイプがPOSTだと405 Method Not Allowedになる。
CGIでも.htaccessにAddHandler cgi-script .cgi などが記述されておらず、
CGIとして設定されていない状態でPOSTで送ると同じエラーになる。
Apache1.3系は静的ファイルにPOSTが使えない。
Apache2系はPOSTもGETも同じ挙動。
解決策
XMLHttpRequestメソッドのタイプをPOSTからGETに変更
※.htaccessでAddHandler server-parsed .htmlとするのは良くない。
Ajax.Request Samples
以下フレームワークは全てデフォルトがPOSTなので、GETにする場合はオプションでの指定が必須。
mootools [doc]
new Request({method: 'get', url: 'example.dat'});
prototype [doc]
new Ajax.Request('example.dat', { method: 'get', });
jquery [doc]
$.ajax({type: "GET",url: "example.dat",dataType: "text"});
「[js]Ajax.Requestと405 Method Not Allowed」への2件のフィードバック