Mach3.laBlog

jQueryによるAjaxリクエストをサーバ側で検知する

この記事は賞味期限切れです。(更新から1年が経過しています)

jQueryでXmlHttpRequestを介してアクセスされたのかどうかを判別する方法です。
Ajaxで呼ばれた時とそうでない場合で出力を分けたりする時に使えそうですね。

Detecting Ajax Events on the Server

Learning jQuery – Tips, Techniques, Tutorials

簡単な仕組み

ネタ元はこの記事です。
Detecting Ajax Events on the Server » Learning jQuery – Tips, Techniques, Tutorials

どうやらjQueryはXmlHttpRequestでリクエストをする際に
「X-Requested-With」というヘッダに
「xmlHttpRequest」という値を格納しているそうな。
jQuery…なんという愛でしょう。

jQueryの素晴らしさを実感すると同時に、
やはり一度はソースを熟読しておくべきだなぁと感じますね。
参考になる設計手法とか、恐らく随所に見られる事でしょう!

取得してみる

PHPとRubyで、試しに取得してみました。

PHP

$xhr = ( @$_SERVER["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest" );
echo ($xhr) ? "jQuery Ajax" : "Requested Directly" ;

Ruby

xhr = ( ENV["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest" )
print (xhr) ? "jQuery Ajax" : "Requested Directly"

ちなみにこのヘッダが渡されるのは、あくまでもXMLHttpRequestを介して行われた通信だけです。
それ以外のもの、例えばJSONP等の場合は渡されないので注意しましょう。
(JSONPはscript要素を追加しているだけなので、XMLHttpRequestは使用していません)
cf) jQueryはJSONPの理解の妨げになるか?

ネタ元のブログも素晴らしいです!
今回初めて知ったのですが、是非とも全てに目を通したいです。
Learning jQuery – Tips, Techniques, Tutorials

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*