Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #6616 -- Added an is_ajax() method to HttpRequest that uses the…

… de facto

standard header for detecting an XmlHttpRequest call. Thanks, Daniel Lindsley.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7334 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit c0537a961fcf412ff284a838e4394fc537c14dcf 1 parent c01e6b8
@malcolmt malcolmt authored
Showing with 21 additions and 0 deletions.
  1. +1 −0  AUTHORS
  2. +3 −0  django/http/__init__.py
  3. +17 −0 docs/request_response.txt
View
1  AUTHORS
@@ -245,6 +245,7 @@ answer newbie questions, and generally made Django that much better:
michael.mcewan@gmail.com
michal@plovarna.cz
Mikko Hellsing <mikko@sorl.net>
+ Daniel Lindsley <polarcowz@gmail.com>
Orestis Markou <orestis@orestis.gr>
Slawek Mikula <slawek dot mikula at gmail dot com>
mitakummaa@gmail.com
View
3  django/http/__init__.py
@@ -82,6 +82,9 @@ def build_absolute_uri(self, location=None):
def is_secure(self):
return os.environ.get("HTTPS") == "on"
+ def is_ajax(self):
+ return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
+
def _set_encoding(self, val):
"""
Sets the encoding used for GET/POST accesses. If the GET or POST
View
17 docs/request_response.txt
@@ -199,6 +199,23 @@ Methods
Returns ``True`` if the request is secure; that is, if it was made with
HTTPS.
+``is_ajax()``
+ **New in Django development version**
+
+ Returns ``True`` if the request was made via an XMLHttpRequest by checking
+ the ``HTTP_X_REQUESTED_WITH`` header for the string *'XMLHttpRequest'*. The
+ following major Javascript libraries all send this header:
+
+ * jQuery
+ * Dojo
+ * MochiKit
+ * MooTools
+ * Prototype
+ * YUI
+
+ If you write your own XMLHttpRequest call (on the browser side), you will
+ have to set this header manually to use this method.
+
QueryDict objects
-----------------
Please sign in to comment.
Something went wrong with that request. Please try again.