]> source.dussan.org Git - jquery.git/commitdiff
Handle a falsy URL in the settings object for jQuery.ajax. Fixes #10093, Closes gh-979
authorBen Truyman <bentruyman@gmail.com>
Tue, 16 Oct 2012 15:37:15 +0000 (11:37 -0400)
committerRick Waldron <waldron.rick@gmail.com>
Tue, 16 Oct 2012 15:37:15 +0000 (11:37 -0400)
src/ajax.js
test/unit/ajax.js

index 394c84e66e216829ee6d1ea886c611b23eff5d89..3f71f8c6e7ed4bb69cb3dbcd77261bb15bc99695 100644 (file)
@@ -247,6 +247,7 @@ jQuery.extend({
                        target = jQuery.ajaxSettings;
                }
                ajaxExtend( target, settings );
+
                return target;
        },
 
@@ -557,8 +558,9 @@ jQuery.extend({
 
                // Remove hash character (#7531: and string promotion)
                // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+               // Handle falsy url in the settings object (#10093: consistency with old signature)
                // We also use the url parameter if available
-               s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+               s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
 
                // Extract dataTypes list
                s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace );
index d11cb13f7f4e5438139b11ac8e305dc45c42e30a..4a93c65fe11dfce593c5a01eb7f9957eb7154b67 100644 (file)
@@ -1451,7 +1451,7 @@ if ( jQuery.ajax && ( !isLocal || hasPHP ) ) {
 
 
        jQuery.each( [ "Same Domain", "Cross Domain" ], function( crossDomain, label ) {
-       
+
                asyncTest( "jQuery.ajax() - JSONP, Query String (?n)" + label, function() {
                        expect( 4 );
 
@@ -1543,7 +1543,7 @@ if ( jQuery.ajax && ( !isLocal || hasPHP ) ) {
                                        plus();
                                }
                        });
-                       
+
                        window["jsonpResults"] = function( data ) {
                                ok( data["data"], "JSON results returned (GET, custom callback function)" );
                                window["jsonpResults"] = undefined;
@@ -2725,4 +2725,38 @@ if ( jQuery.ajax && ( !isLocal || hasPHP ) ) {
                expect( 1 );
                ok( jQuery.active === 0, "ajax active counter should be zero: " + jQuery.active );
        });
+
+       test("jQuery.ajax - falsy url as argument (#10093)", function() {
+               expect( 4 );
+
+               jQuery.ajaxSetup({ timeout: 0 });
+
+               stop();
+
+               jQuery.when(
+                       jQuery.ajax("").success(function(){ ok( true, "settings object - empty string" ); }),
+                       jQuery.ajax( false ).success(function(){ ok( true, "false" ); }),
+                       jQuery.ajax( null ).success(function(){ ok( true, "null" ); }),
+                       jQuery.ajax( undefined ).success(function(){ ok( true, "undefined" ); })
+               ).always(function () {
+                       start();
+               });
+       });
+
+       test("jQuery.ajax - falsy url in settings object (#10093)", function() {
+               expect( 4 );
+
+               jQuery.ajaxSetup({ timeout: 0 });
+
+               stop();
+
+               jQuery.when(
+                       jQuery.ajax({ url: "" }).success(function(){ ok( true, "settings object - empty string" ); }),
+                       jQuery.ajax({ url: false }).success(function(){ ok( true, "false" ); }),
+                       jQuery.ajax({ url: null }).success(function(){ ok( true, "null" ); }),
+                       jQuery.ajax({ url: undefined }).success(function(){ ok( true, "undefined" ); })
+               ).always(function () {
+                       start();
+               });
+       });
 }