aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ajax.js6
-rw-r--r--test/unit/ajax.js13
2 files changed, 17 insertions, 2 deletions
diff --git a/src/ajax.js b/src/ajax.js
index a6dc4095a..55b528eac 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -746,8 +746,10 @@ jQuery.extend( {
response = ajaxHandleResponses( s, jqXHR, responses );
}
- // Use a noop converter for missing script
- if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
+ // Use a noop converter for missing script but not if jsonp
+ if ( !isSuccess &&
+ jQuery.inArray( "script", s.dataTypes ) > -1 &&
+ jQuery.inArray( "json", s.dataTypes ) < 0 ) {
s.converters[ "text script" ] = function() {};
}
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 125470519..fe831d0b1 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -810,6 +810,19 @@ QUnit.module( "ajax", {
};
} );
+ ajaxTest( "jQuery.ajax() - do execute scripts if JSONP from unsuccessful responses", 1, function( assert ) {
+ var testMsg = "Unsuccessful JSONP requests should have a JSON body";
+ return {
+ dataType: "jsonp",
+ url: url( "mock.php?action=errorWithScript" ),
+ // error is the significant assertion
+ error: function( xhr ) {
+ var expected = { "status": 404, "msg": "Not Found" };
+ assert.deepEqual( xhr.responseJSON, expected, testMsg );
+ }
+ };
+ } );
+
ajaxTest( "jQuery.ajax() - do not execute scripts from unsuccessful responses (gh-4250)", 11, function( assert ) {
var globalEval = jQuery.globalEval;