aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ajax/binary.js7
-rw-r--r--test/unit/ajax.js23
2 files changed, 28 insertions, 2 deletions
diff --git a/src/ajax/binary.js b/src/ajax/binary.js
index e96661da7..16f06d7e9 100644
--- a/src/ajax/binary.js
+++ b/src/ajax/binary.js
@@ -2,10 +2,13 @@ import jQuery from "../core.js";
import "../ajax.js";
-jQuery.ajaxPrefilter( function( s ) {
+jQuery.ajaxPrefilter( function( s, origOptions ) {
// Binary data needs to be passed to XHR as-is without stringification.
- if ( typeof s.data !== "string" && !jQuery.isPlainObject( s.data ) ) {
+ if ( typeof s.data !== "string" && !jQuery.isPlainObject( s.data ) &&
+
+ // Don't disable data processing if explicitly set by the user.
+ !( "processData" in origOptions ) ) {
s.processData = false;
}
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 7ecedc212..bcaa7651d 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -3148,4 +3148,27 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re
};
} );
+ ajaxTest( "jQuery.ajax() - non-plain object", 1, function( assert ) {
+ return {
+ url: url( "mock.php?action=name" ),
+ method: "post",
+ data: Object.create( { name: "peter" } ),
+ success: function( data ) {
+ assert.strictEqual( data, "ERROR", "Data correctly not sent" );
+ }
+ };
+ } );
+
+ ajaxTest( "jQuery.ajax() - non-plain object with processData: true", 1, function( assert ) {
+ return {
+ url: url( "mock.php?action=name" ),
+ method: "post",
+ processData: true,
+ data: Object.create( { name: "peter" } ),
+ success: function( data ) {
+ assert.strictEqual( data, "pan", "Data sent correctly" );
+ }
+ };
+ } );
+
} )();