aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2010-01-25 01:08:24 -0500
committerJohn Resig <jeresig@gmail.com>2010-01-25 01:08:24 -0500
commit1a14a38ff77839b2a71fbc3f3c0890ebe62438c7 (patch)
treee05528220d4f3726b6283e5c673ce3def070552e
parentf91b944cabf7be9aadb40ffe35fce76b50f5f25f (diff)
downloadjquery-1a14a38ff77839b2a71fbc3f3c0890ebe62438c7.tar.gz
jquery-1a14a38ff77839b2a71fbc3f3c0890ebe62438c7.zip
Make sure original context is maintained and not the deep extended one. Fixes #5924.
-rw-r--r--src/ajax.js2
-rw-r--r--test/unit/ajax.js21
2 files changed, 22 insertions, 1 deletions
diff --git a/src/ajax.js b/src/ajax.js
index ee52ed82f..4af502a97 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -206,7 +206,7 @@ jQuery.extend({
var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
var jsonp, status, data,
- callbackContext = s.context || s,
+ callbackContext = origSettings && origSettings.context || s,
type = s.type.toUpperCase();
// convert data if not already a string
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 775523e58..195fa27ca 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -180,6 +180,27 @@ test("Ajax events with context", function() {
});
});
+test("jQuery.ajax context modification", function() {
+ expect(1);
+
+ stop();
+
+ var obj = {}
+
+ jQuery.ajax({
+ url: url("data/name.html"),
+ context: obj,
+ beforeSend: function(){
+ this.test = "foo";
+ },
+ complete: function() {
+ start();
+ }
+ });
+
+ equals( obj.test, "foo", "Make sure the original object is maintained." );
+});
+
test("jQuery.ajax() - disabled globals", function() {
expect( 3 );
stop();