From be1f1d7b5b1152a0a817a743db81151f55d23ddf Mon Sep 17 00:00:00 2001 From: Erick Ruiz Date: Mon, 15 Oct 2012 15:53:39 -0400 Subject: [PATCH] Fixing style for test unit ajax.js. https://github.com/jquery/2012-dev-summit/issues/56 --- test/unit/ajax.js | 4214 ++++++++++++++++++++++++--------------------- 1 file changed, 2213 insertions(+), 2001 deletions(-) diff --git a/test/unit/ajax.js b/test/unit/ajax.js index bdf2fbbd9..547dcae8f 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -1,2459 +1,2671 @@ -module("ajax", { teardown: moduleTeardown }); +module( "ajax", { + teardown: moduleTeardown +}); if ( jQuery.ajax && ( !isLocal || hasPHP ) ) { -var isOpera = !!window.opera; - -test("jQuery.ajax() - success callbacks", function() { - expect( 8 ); - - jQuery.ajaxSetup({ timeout: 0 }); - - stop(); - - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - start(); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( true, "ajaxSuccess" ); - }); - - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(true, "success"); }, - error: function(){ ok(false, "error"); }, - complete: function(){ ok(true, "complete"); } - }); -}); + var isOpera = !!window.opera; -test("jQuery.ajax() - success callbacks - (url, options) syntax", function() { - expect( 8 ); + test( "jQuery.ajax() - success callbacks", function() { + expect( 8 ); - jQuery.ajaxSetup({ timeout: 0 }); + jQuery.ajaxSetup({ + timeout: 0 + }); - stop(); + stop(); - setTimeout(function(){ - jQuery("#foo").ajaxStart(function(){ + jQuery("#foo").ajaxStart(function() { ok( true, "ajaxStart" ); - }).ajaxStop(function(){ + }).ajaxStop(function() { ok( true, "ajaxStop" ); start(); - }).ajaxSend(function(){ + }).ajaxSend(function() { ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ + }).ajaxComplete(function() { ok( true, "ajaxComplete" ); - }).ajaxError(function(){ + }).ajaxError(function() { ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ + }).ajaxSuccess(function() { ok( true, "ajaxSuccess" ); }); - jQuery.ajax( url("data/name.html") , { - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(true, "success"); }, - error: function(){ ok(false, "error"); }, - complete: function(){ ok(true, "complete"); } + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function() { + ok( true, "beforeSend" ); + }, + success: function() { + ok( true, "success" ); + }, + error: function() { + ok( false, "error" ); + }, + complete: function() { + ok( true, "complete"); + } }); - }, 13); -}); - -test("jQuery.ajax() - success callbacks (late binding)", function() { - expect( 8 ); - - jQuery.ajaxSetup({ timeout: 0 }); + }); - stop(); + test( "jQuery.ajax() - success callbacks - (url, options) syntax", function() { + expect( 8 ); - setTimeout(function(){ - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - start(); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( true, "ajaxSuccess" ); + jQuery.ajaxSetup({ + timeout: 0 }); - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); } - }) - .complete(function(){ ok(true, "complete"); }) - .success(function(){ ok(true, "success"); }) - .error(function(){ ok(false, "error"); }); - }, 13); -}); + stop(); -test("jQuery.ajax() - success callbacks (oncomplete binding)", function() { - expect( 8 ); + setTimeout(function() { + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); + start(); + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }).ajaxError(function() { + ok( false, "ajaxError" ); + }).ajaxSuccess(function() { + ok( true, "ajaxSuccess" ); + }); - jQuery.ajaxSetup({ timeout: 0 }); + jQuery.ajax( url("data/name.html"), { + beforeSend: function() { + ok( true, "beforeSend" ); + }, + success: function() { + ok( true, "success" ); + }, + error: function() { + ok( false, "error" ); + }, + complete: function() { + ok( true, "complete" ); + } + }); + }, 13 ); + }); - stop(); + test( "jQuery.ajax() - success callbacks (late binding)", function() { + expect( 8 ); - setTimeout(function(){ - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( true, "ajaxSuccess" ); + jQuery.ajaxSetup({ + timeout: 0 }); - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); }, - complete: function(xhr) { - xhr - .complete(function(){ ok(true, "complete"); }) - .success(function(){ ok(true, "success"); }) - .error(function(){ ok(false, "error"); }) - .complete(function(){ start(); }); - } - }); - }, 13); -}); + stop(); -test("jQuery.ajax() - success callbacks (very late binding)", function() { - expect( 8 ); + setTimeout(function() { + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); + start(); + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }).ajaxError(function() { + ok( false, "ajaxError" ); + }).ajaxSuccess(function() { + ok( true, "ajaxSuccess" ); + }); - jQuery.ajaxSetup({ timeout: 0 }); + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function() { + ok( true, "beforeSend" ); + } + }).complete(function() { + ok( true, "complete" ); + }).success(function() { + ok( true, "success" ); + }).error(function() { + ok( false, "error" ); + }); + }, 13 ); + }); - stop(); + test( "jQuery.ajax() - success callbacks (oncomplete binding)", function() { + expect( 8 ); - setTimeout(function(){ - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( true, "ajaxSuccess" ); + jQuery.ajaxSetup({ + timeout: 0 }); - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); }, - complete: function(xhr) { - setTimeout (function() { - xhr - .complete(function(){ ok(true, "complete"); }) - .success(function(){ ok(true, "success"); }) - .error(function(){ ok(false, "error"); }) - .complete(function(){ start(); }); - },100); - } - }); - }, 13); -}); - -test("jQuery.ajax() - success callbacks (order)", function() { - expect( 1 ); + stop(); - jQuery.ajaxSetup({ timeout: 0 }); + setTimeout(function() { + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }).ajaxError(function() { + ok( false, "ajaxError" ); + }).ajaxSuccess(function() { + ok( true, "ajaxSuccess" ); + }); - stop(); + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function() { + ok( true, "beforeSend" ); + }, + complete: function( xhr ) { + xhr.complete(function() { + ok( true, "complete" ); + }).success(function() { + ok( true, "success" ); + }).error(function() { + ok( false, "error" ); + }).complete(function() { + start(); + }); + } + }); + }, 13 ); + }); - var testString = ""; + test( "jQuery.ajax() - success callbacks (very late binding)", function() { + expect( 8 ); - setTimeout(function(){ - jQuery.ajax({ - url: url("data/name.html"), - success: function( _1 , _2 , xhr ) { - xhr.success(function() { - xhr.success(function() { - testString += "E"; - }); - testString += "D"; - }); - testString += "A"; - }, - complete: function() { - strictEqual(testString, "ABCDE", "Proper order"); - start(); - } - }).success(function() { - testString += "B"; - }).success(function() { - testString += "C"; + jQuery.ajaxSetup({ + timeout: 0 }); - }, 13); -}); -test("jQuery.ajax() - error callbacks", function() { - expect( 8 ); - stop(); - - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - start(); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); - }).ajaxError(function(){ - ok( true, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( false, "ajaxSuccess" ); - }); - - jQuery.ajaxSetup({ timeout: 500 }); - - jQuery.ajax({ - url: url("data/name.php?wait=5"), - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(false, "success"); }, - error: function(){ ok(true, "error"); }, - complete: function(){ ok(true, "complete"); } - }); -}); + stop(); -test( "jQuery.ajax - multiple method signatures introduced in 1.5 ( #8107)", function() { + setTimeout(function() { + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }).ajaxError(function() { + ok( false, "ajaxError" ); + }).ajaxSuccess(function() { + ok( true, "ajaxSuccess" ); + }); - expect( 4 ); + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function() { + ok(true, "beforeSend"); + }, + complete: function( xhr ) { + setTimeout (function() { + xhr.complete(function() { + ok( true, "complete" ); + }).success(function() { + ok( true, "success" ); + }).error(function() { + ok( false, "error" ); + }).complete(function() { + start(); + }); + }, 100 ); + } + }); + }, 13 ); + }); - stop(); + test( "jQuery.ajax() - success callbacks (order)", function() { + expect( 1 ); - jQuery.when( - jQuery.ajax().success(function() { ok( true, "With no arguments" ); }), - jQuery.ajax("data/name.html").success(function() { ok( true, "With only string URL argument" ); }), - jQuery.ajax("data/name.html", {} ).success(function() { ok( true, "With string URL param and map" ); }), - jQuery.ajax({ url: "data/name.html"} ).success(function() { ok( true, "With only map" ); }) - ).always(function() { - start(); - }); + jQuery.ajaxSetup({ + timeout: 0 + }); -}); + stop(); -test("jQuery.ajax() - textStatus and errorThrown values", function() { + var testString = ""; - var nb = 2; + setTimeout(function() { + jQuery.ajax({ + url: url("data/name.html"), + success: function( _1, _2, xhr ) { + xhr.success(function() { + xhr.success(function() { + testString += "E"; + }); + testString += "D"; + }); + testString += "A"; + }, + complete: function() { + strictEqual( testString, "ABCDE", "Proper order" ); + start(); + } + }).success(function() { + testString += "B"; + }).success(function() { + testString += "C"; + }); + }, 13 ); + }); - expect( 2 * nb ); - stop(); + test( "jQuery.ajax() - error callbacks", function() { + expect( 8 ); + stop(); - function startN() { - if ( !( --nb ) ) { + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); start(); - } - } + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }).ajaxError(function() { + ok( true, "ajaxError" ); + }).ajaxSuccess(function() { + ok( false, "ajaxSuccess" ); + }); - /* - Safari 3.x returns "OK" instead of "Not Found" - Safari 4.x doesn't have this issue so the test should be re-instated once - we drop support for 3.x - - jQuery.ajax({ - url: url("data/nonExistingURL"), - error: function( _ , textStatus , errorThrown ){ - strictEqual( textStatus, "error", "textStatus is 'error' for 404" ); - strictEqual( errorThrown, "Not Found", "errorThrown is 'Not Found' for 404"); - startN(); - } - }); - */ + jQuery.ajaxSetup({ + timeout: 500 + }); - jQuery.ajax({ - url: url("data/name.php?wait=5"), - error: function( _ , textStatus , errorThrown ){ - strictEqual( textStatus, "abort", "textStatus is 'abort' for abort" ); - strictEqual( errorThrown, "abort", "errorThrown is 'abort' for abort"); - startN(); - } - }).abort(); - - jQuery.ajax({ - url: url("data/name.php?wait=5"), - error: function( _ , textStatus , errorThrown ){ - strictEqual( textStatus, "mystatus", "textStatus is 'mystatus' for abort('mystatus')" ); - strictEqual( errorThrown, "mystatus", "errorThrown is 'mystatus' for abort('mystatus')"); - startN(); - } - }).abort( "mystatus" ); -}); + jQuery.ajax({ + url: url("data/name.php?wait=5"), + beforeSend: function() { + ok( true, "beforeSend" ); + }, + success: function() { + ok( false, "success" ); + }, + error: function() { + ok( true, "error" ); + }, + complete: function() { + ok( true, "complete" ); + } + }); + }); -test("jQuery.ajax() - responseText on error", function() { + test( "jQuery.ajax - multiple method signatures introduced in 1.5 ( #8107)", function() { - expect( 1 ); + expect( 4 ); - stop(); + stop(); - jQuery.ajax({ - url: url("data/errorWithText.php"), - error: function(xhr) { - strictEqual( xhr.responseText , "plain text message" , "Test jqXHR.responseText is filled for HTTP errors" ); - }, - complete: function() { + jQuery.when( + /* jQuery.when arguments start */ + jQuery.ajax().success(function() { + ok( true, "With no arguments" ); + }), + jQuery.ajax("data/name.html").success(function() { + ok( true, "With only string URL argument" ); + }), + jQuery.ajax( "data/name.html", {}).success(function() { + ok( true, "With string URL param and map" ); + }), + jQuery.ajax({ + url: "data/name.html" + }).success(function() { + ok( true, "With only map" ); + }) + /* jQuery.when arguments end */ + ).always(function() { start(); - } - }); -}); + }); -test(".ajax() - retry with jQuery.ajax( this )", function() { + }); - expect( 2 ); + test( "jQuery.ajax() - textStatus and errorThrown values", function() { - stop(); + var nb = 2; - var firstTime = true, - previousUrl; + expect( 2 * nb ); + stop(); - jQuery.ajax({ - url: url("data/errorWithText.php"), - error: function() { - if ( firstTime ) { - firstTime = false; - jQuery.ajax( this ); - } else { - ok( true , "Test retrying with jQuery.ajax(this) works" ); - jQuery.ajax({ - url: url("data/errorWithText.php"), - data: { "x": 1 }, - beforeSend: function() { - if ( !previousUrl ) { - previousUrl = this.url; - } else { - strictEqual( this.url , previousUrl, "url parameters are not re-appended" ); - start(); - return false; - } - }, - error: function() { - jQuery.ajax( this ); - } - }); + function startN() { + if ( !( --nb ) ) { + start(); } } - }); -}); -test(".ajax() - headers" , function() { + /* + Safari 3.x returns "OK" instead of "Not Found" + Safari 4.x doesn't have this issue so the test should be re-instated once + we drop support for 3.x - expect( 4 ); + jQuery.ajax({ + url: url("data/nonExistingURL"), + error: function( _, textStatus, errorThrown ) { + strictEqual( textStatus, "error", "textStatus is 'error' for 404" ); + strictEqual( errorThrown, "Not Found", "errorThrown is 'Not Found' for 404"); + startN(); + } + }); + */ - stop(); + jQuery.ajax({ + url: url("data/name.php?wait=5"), + error: function( _, textStatus, errorThrown ) { + strictEqual( textStatus, "abort", "textStatus is 'abort' for abort" ); + strictEqual( errorThrown, "abort", "errorThrown is 'abort' for abort" ); + startN(); + } + }).abort(); - jQuery("#foo").ajaxSend(function( evt, xhr ) { - xhr.setRequestHeader( "ajax-send", "test" ); + jQuery.ajax({ + url: url("data/name.php?wait=5"), + error: function( _, textStatus, errorThrown ) { + strictEqual( textStatus, "mystatus", "textStatus is 'mystatus' for abort('mystatus')" ); + strictEqual( errorThrown, "mystatus", "errorThrown is 'mystatus' for abort('mystatus')" ); + startN(); + } + }).abort("mystatus"); }); - var requestHeaders = { - "siMPle": "value", - "SometHing-elsE": "other value", - "OthEr": "something else" - }, - list = [], - i; - - for( i in requestHeaders ) { - list.push( i ); - } - list.push( "ajax-send" ); - - jQuery.ajax(url("data/headers.php?keys="+list.join( "_" ) ), { + test( "jQuery.ajax() - responseText on error", function() { - headers: requestHeaders, - success: function( data , _ , xhr ) { - var i, emptyHeader, - tmp = []; - for ( i in requestHeaders ) { - tmp.push( i , ": " , requestHeaders[ i ] , "\n" ); - } - tmp.push( "ajax-send: test\n" ); - tmp = tmp.join( "" ); + expect( 1 ); - strictEqual( data , tmp , "Headers were sent" ); - strictEqual( xhr.getResponseHeader( "Sample-Header" ) , "Hello World" , "Sample header received" ); + stop(); - emptyHeader = xhr.getResponseHeader( "Empty-Header" ); - if ( emptyHeader === null ) { - ok( true, "Firefox doesn't support empty headers" ); - } else { - strictEqual( emptyHeader , "" , "Empty header received" ); + jQuery.ajax({ + url: url("data/errorWithText.php"), + error: function( xhr ) { + strictEqual( xhr.responseText, "plain text message", "Test jqXHR.responseText is filled for HTTP errors" ); + }, + complete: function() { + start(); } - strictEqual( xhr.getResponseHeader( "Sample-Header2" ) , "Hello World 2" , "Second sample header received" ); - }, - error: function(){ ok(false, "error"); } - - }).always(function() { - start(); + }); }); -}); + test( ".ajax() - retry with jQuery.ajax( this )", function() { -test(".ajax() - Accept header" , function() { + expect( 2 ); - expect( 1 ); + stop(); - stop(); + var previousUrl, + firstTime = true; - jQuery.ajax(url("data/headers.php?keys=accept"), { - headers: { - Accept: "very wrong accept value" - }, - beforeSend: function( xhr ) { - xhr.setRequestHeader( "Accept", "*/*" ); - }, - success: function( data ) { - strictEqual( data , "accept: */*\n" , "Test Accept header is set to last value provided" ); - start(); - }, - error: function(){ ok(false, "error"); } + jQuery.ajax({ + url: url("data/errorWithText.php"), + error: function() { + if ( firstTime ) { + firstTime = false; + jQuery.ajax( this ); + } else { + ok ( true, "Test retrying with jQuery.ajax(this) works" ); + jQuery.ajax({ + url: url("data/errorWithText.php"), + data: { + "x": 1 + }, + beforeSend: function() { + if ( !previousUrl ) { + previousUrl = this.url; + } else { + strictEqual( this.url, previousUrl, "url parameters are not re-appended" ); + start(); + return false; + } + }, + error: function() { + jQuery.ajax( this ); + } + }); + } + } + }); }); -}); - -test(".ajax() - contentType" , function() { + test( ".ajax() - headers", function() { - expect( 2 ); + expect( 4 ); - stop(); + stop(); - var count = 2; + jQuery("#foo").ajaxSend(function( evt, xhr ) { + xhr.setRequestHeader( "ajax-send", "test" ); + }); - function restart() { - if ( ! --count ) { - start(); - } - } + var i, + requestHeaders = { + "siMPle": "value", + "SometHing-elsE": "other value", + "OthEr": "something else" + }, + list = []; - jQuery.ajax(url("data/headers.php?keys=content-type" ), { - contentType: "test", - success: function( data ) { - strictEqual( data , "content-type: test\n" , "Test content-type is sent when options.contentType is set" ); - }, - complete: function() { - restart(); + for ( i in requestHeaders ) { + list.push( i ); } - }); + list.push("ajax-send"); - jQuery.ajax(url("data/headers.php?keys=content-type" ), { - contentType: false, - success: function( data ) { - strictEqual( data , "content-type: \n" , "Test content-type is not sent when options.contentType===false" ); - }, - complete: function() { - restart(); - } - }); + jQuery.ajax( url("data/headers.php?keys=" + list.join("_")), { -}); + headers: requestHeaders, + success: function( data, _, xhr ) { + var i, emptyHeader, + tmp = []; + for ( i in requestHeaders ) { + tmp.push( i, ": ", requestHeaders[ i ], "\n" ); + } + tmp.push("ajax-send: test\n"); + tmp = tmp.join(""); -test(".ajax() - protocol-less urls", function() { - expect(1); + strictEqual( data, tmp, "Headers were sent" ); + strictEqual( xhr.getResponseHeader("Sample-Header"), "Hello World", "Sample header received" ); - jQuery.ajax({ - url: "//somedomain.com", - beforeSend: function( xhr, settings ) { - equal(settings.url, location.protocol + "//somedomain.com", "Make sure that the protocol is added."); - return false; - } + emptyHeader = xhr.getResponseHeader("Empty-Header"); + if ( emptyHeader === null ) { + ok( true, "Firefox doesn't support empty headers" ); + } else { + strictEqual( emptyHeader, "", "Empty header received" ); + } + strictEqual( xhr.getResponseHeader("Sample-Header2"), "Hello World 2", "Second sample header received" ); + }, + error: function() { + ok( false, "error" ); + } + }).always(function() { + start(); + }); }); -}); -test(".ajax() - hash", function() { - expect(3); + test( ".ajax() - Accept header", function() { - jQuery.ajax({ - url: "data/name.html#foo", - beforeSend: function( xhr, settings ) { - equal(settings.url, "data/name.html", "Make sure that the URL is trimmed."); - return false; - } - }); + expect( 1 ); - jQuery.ajax({ - url: "data/name.html?abc#foo", - beforeSend: function( xhr, settings ) { - equal(settings.url, "data/name.html?abc", "Make sure that the URL is trimmed."); - return false; - } - }); + stop(); - jQuery.ajax({ - url: "data/name.html?abc#foo", - data: { "test": 123 }, - beforeSend: function( xhr, settings ) { - equal(settings.url, "data/name.html?abc&test=123", "Make sure that the URL is trimmed."); - return false; - } + jQuery.ajax( url("data/headers.php?keys=accept"), { + headers: { + Accept: "very wrong accept value" + }, + beforeSend: function( xhr ) { + xhr.setRequestHeader("Accept", "*/*"); + }, + success: function( data ) { + strictEqual( data, "accept: */*\n", "Test Accept header is set to last value provided" ); + start(); + }, + error: function() { + ok( false, "error" ); + } + }); }); -}); -test("jQuery ajax - cross-domain detection", function() { + test( ".ajax() - contentType", function() { - expect( 7 ); + expect( 2 ); - var loc = document.location, - samePort = loc.port || ( loc.protocol === "http:" ? 80 : 443 ), - otherPort = loc.port === 666 ? 667 : 666, - otherProtocol = loc.protocol === "http:" ? "https:" : "http:"; + stop(); - jQuery.ajax({ - dataType: "jsonp", - url: loc.protocol + "//" + loc.host + ":" + samePort, - beforeSend: function( _ , s ) { - ok( !s.crossDomain , "Test matching ports are not detected as cross-domain" ); - return false; - } - }); + var count = 2; - jQuery.ajax({ - dataType: "jsonp", - url: otherProtocol + "//" + loc.host, - beforeSend: function( _ , s ) { - ok( s.crossDomain , "Test different protocols are detected as cross-domain" ); - return false; + function restart() { + if ( ! --count ) { + start(); + } } - }); - jQuery.ajax({ - dataType: "jsonp", - url: "app:/path", - beforeSend: function( _ , s ) { - ok( s.crossDomain , "Adobe AIR app:/ URL detected as cross-domain" ); - return false; - } - }); + jQuery.ajax( url("data/headers.php?keys=content-type"), { + contentType: "test", + success: function( data ) { + strictEqual( data, "content-type: test\n", "Test content-type is sent when options.contentType is set" ); + }, + complete: function() { + restart(); + } + }); - jQuery.ajax({ - dataType: "jsonp", - url: loc.protocol + "//somewebsitethatdoesnotexist-656329477541.com:" + ( loc.port || 80 ), - beforeSend: function( _ , s ) { - ok( s.crossDomain , "Test different hostnames are detected as cross-domain" ); - return false; - } - }); + jQuery.ajax( url("data/headers.php?keys=content-type" ), { + contentType: false, + success: function( data ) { + strictEqual( data, "content-type: \n", "Test content-type is not sent when options.contentType===false" ); + }, + complete: function() { + restart(); + } + }); - jQuery.ajax({ - dataType: "jsonp", - url: loc.protocol + "//" + loc.hostname + ":" + otherPort, - beforeSend: function( _ , s ) { - ok( s.crossDomain , "Test different ports are detected as cross-domain" ); - return false; - } }); - jQuery.ajax({ - dataType: "jsonp", - url: "about:blank", - beforeSend: function( _ , s ) { - ok( s.crossDomain , "Test about:blank is detected as cross-domain" ); - return false; - } - }); + test( ".ajax() - protocol-less urls", function() { + expect( 1 ); - jQuery.ajax({ - dataType: "jsonp", - url: loc.protocol + "//" + loc.host, - crossDomain: true, - beforeSend: function( _ , s ) { - ok( s.crossDomain , "Test forced crossDomain is detected as cross-domain" ); - return false; - } + jQuery.ajax({ + url: "//somedomain.com", + beforeSend: function( xhr, settings ) { + equal( settings.url, location.protocol + "//somedomain.com", "Make sure that the protocol is added." ); + return false; + } + }); }); -}); - -test(".load() - 404 error callbacks", function() { - expect( 6 ); - stop(); - - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - start(); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); - }).ajaxError(function(){ - ok( true, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( false, "ajaxSuccess" ); - }); + test( ".ajax() - hash", function() { + expect( 3 ); - jQuery("
").load("data/404.html", function(){ - ok(true, "complete"); - }); -}); + jQuery.ajax({ + url: "data/name.html#foo", + beforeSend: function( xhr, settings ) { + equal( settings.url, "data/name.html", "Make sure that the URL is trimmed." ); + return false; + } + }); -test("jQuery.ajax() - abort", function() { - expect( 8 ); - stop(); + jQuery.ajax({ + url: "data/name.html?abc#foo", + beforeSend: function( xhr, settings ) { + equal( settings.url, "data/name.html?abc", "Make sure that the URL is trimmed." ); + return false; + } + }); - jQuery("#foo").ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - start(); - }).ajaxSend(function(){ - ok( true, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete" ); + jQuery.ajax({ + url: "data/name.html?abc#foo", + data: { + "test": 123 + }, + beforeSend: function( xhr, settings ) { + equal( settings.url, "data/name.html?abc&test=123", "Make sure that the URL is trimmed." ); + return false; + } + }); }); - var xhr = jQuery.ajax({ - url: url("data/name.php?wait=5"), - beforeSend: function(){ ok(true, "beforeSend"); }, - complete: function(){ ok(true, "complete"); } - }); + test( "jQuery ajax - cross-domain detection", function() { - equal( xhr.readyState, 1, "XHR readyState indicates successful dispatch" ); + expect( 7 ); - xhr.abort(); - equal( xhr.readyState, 0, "XHR readyState indicates successful abortion" ); -}); + var loc = document.location, + samePort = loc.port || ( loc.protocol === "http:" ? 80 : 443 ), + otherPort = loc.port === 666 ? 667 : 666, + otherProtocol = loc.protocol === "http:" ? "https:" : "http:"; -test("Ajax events with context", function() { - expect(14); + jQuery.ajax({ + dataType: "jsonp", + url: loc.protocol + "//" + loc.host + ":" + samePort, + beforeSend: function( _, s ) { + ok( !s.crossDomain, "Test matching ports are not detected as cross-domain" ); + return false; + } + }); - stop(); - var context = document.createElement("div"); + jQuery.ajax({ + dataType: "jsonp", + url: otherProtocol + "//" + loc.host, + beforeSend: function( _, s ) { + ok( s.crossDomain, "Test different protocols are detected as cross-domain" ); + return false; + } + }); - function event(e){ - equal( this, context, e.type ); - } + jQuery.ajax({ + dataType: "jsonp", + url: "app:/path", + beforeSend: function( _, s ) { + ok( s.crossDomain, "Adobe AIR app:/ URL detected as cross-domain" ); + return false; + } + }); - function callback(msg){ - return function(){ - equal( this, context, "context is preserved on callback " + msg ); - }; - } + jQuery.ajax({ + dataType: "jsonp", + url: loc.protocol + "//somewebsitethatdoesnotexist-656329477541.com:" + ( loc.port || 80 ), + beforeSend: function( _, s ) { + ok( s.crossDomain, "Test different hostnames are detected as cross-domain" ); + return false; + } + }); - function nocallback(msg){ - return function(){ - equal( typeof this.url, "string", "context is settings on callback " + msg ); - }; - } - - jQuery("#foo").add(context) - .ajaxSend(event) - .ajaxComplete(event) - .ajaxError(event) - .ajaxSuccess(event); - - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: callback("beforeSend"), - success: callback("success"), - error: callback("error"), - complete:function(){ - callback("complete").call(this); + jQuery.ajax({ + dataType: "jsonp", + url: loc.protocol + "//" + loc.hostname + ":" + otherPort, + beforeSend: function( _, s ) { + ok( s.crossDomain, "Test different ports are detected as cross-domain" ); + return false; + } + }); - jQuery.ajax({ - url: url("data/404.html"), - context: context, - beforeSend: callback("beforeSend"), - error: callback("error"), - complete: function(){ - callback("complete").call(this); + jQuery.ajax({ + dataType: "jsonp", + url: "about:blank", + beforeSend: function( _, s ) { + ok( s.crossDomain, "Test about:blank is detected as cross-domain" ); + return false; + } + }); - jQuery("#foo").add(context).unbind(); + jQuery.ajax({ + dataType: "jsonp", + url: loc.protocol + "//" + loc.host, + crossDomain: true, + beforeSend: function( _, s ) { + ok( s.crossDomain, "Test forced crossDomain is detected as cross-domain" ); + return false; + } + }); - jQuery.ajax({ - url: url("data/404.html"), - beforeSend: nocallback("beforeSend"), - error: nocallback("error"), - complete: function(){ - nocallback("complete").call(this); - start(); - } - }); - } - }); - }, - context:context }); -}); -test("jQuery.ajax context modification", function() { - expect(1); - - stop(); - - var obj = {}; + test( ".load() - 404 error callbacks", function() { + expect( 6 ); + stop(); - jQuery.ajax({ - url: url("data/name.html"), - context: obj, - beforeSend: function(){ - this.test = "foo"; - }, - complete: function() { + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); start(); - } + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }).ajaxError(function() { + ok( true, "ajaxError" ); + }).ajaxSuccess(function() { + ok( false, "ajaxSuccess" ); + }); + + jQuery("
").load( "data/404.html", function() { + ok( true, "complete" ); + }); }); - equal( obj.test, "foo", "Make sure the original object is maintained." ); -}); + test( "jQuery.ajax() - abort", function() { + expect( 8 ); + stop(); -test("jQuery.ajax context modification through ajaxSetup", function() { - expect(4); + jQuery("#foo").ajaxStart(function() { + ok( true, "ajaxStart" ); + }).ajaxStop(function() { + ok( true, "ajaxStop" ); + start(); + }).ajaxSend(function() { + ok( true, "ajaxSend" ); + }).ajaxComplete(function() { + ok( true, "ajaxComplete" ); + }); - stop(); + var xhr = jQuery.ajax({ + url: url("data/name.php?wait=5"), + beforeSend: function() { + ok( true, "beforeSend" ); + }, + complete: function() { + ok( true, "complete" ); + } + }); - var obj = {}; + equal( xhr.readyState, 1, "XHR readyState indicates successful dispatch" ); - jQuery.ajaxSetup({ - context: obj + xhr.abort(); + equal( xhr.readyState, 0, "XHR readyState indicates successful abortion" ); }); - strictEqual( jQuery.ajaxSettings.context, obj, "Make sure the context is properly set in ajaxSettings." ); + test( "Ajax events with context", function() { + expect( 14 ); - jQuery.ajax({ - url: url("data/name.html"), - complete: function() { - strictEqual( this, obj, "Make sure the original object is maintained." ); - jQuery.ajax({ - url: url("data/name.html"), - context: {}, - complete: function() { - ok( this !== obj, "Make sure overidding context is possible." ); - jQuery.ajaxSetup({ - context: false - }); - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(){ - this.test = "foo2"; - }, - complete: function() { - ok( this !== obj, "Make sure unsetting context is possible." ); - start(); - } - }); - } - }); - } - }); -}); + stop(); + var context = document.createElement("div"); -test("jQuery.ajax() - disabled globals", function() { - expect( 3 ); - stop(); - - jQuery("#foo").ajaxStart(function(){ - ok( false, "ajaxStart" ); - }).ajaxStop(function(){ - ok( false, "ajaxStop" ); - }).ajaxSend(function(){ - ok( false, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( false, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( false, "ajaxSuccess" ); - }); - - jQuery.ajax({ - global: false, - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(true, "success"); }, - error: function(){ ok(false, "error"); }, - complete: function(){ - ok(true, "complete"); - setTimeout(function(){ start(); }, 13); + function event( e ) { + equal( this, context, e.type ); } - }); -}); -test("jQuery.ajax - xml: non-namespace elements inside namespaced elements", function() { - expect(3); - stop(); - jQuery.ajax({ - url: url("data/with_fries.xml"), - dataType: "xml", - success: function(resp) { - equal( jQuery("properties", resp).length, 1, "properties in responseXML" ); - equal( jQuery("jsconf", resp).length, 1, "jsconf in responseXML" ); - equal( jQuery("thing", resp).length, 2, "things in responseXML" ); - start(); + function callback( msg ) { + return function() { + equal( this, context, "context is preserved on callback " + msg ); + }; } - }); -}); -test("jQuery.ajax - xml: non-namespace elements inside namespaced elements (over JSONP)", function() { - expect(3); - stop(); - jQuery.ajax({ - url: url("data/with_fries_over_jsonp.php"), - dataType: "jsonp xml", - success: function(resp) { - equal( jQuery("properties", resp).length, 1, "properties in responseXML" ); - equal( jQuery("jsconf", resp).length, 1, "jsconf in responseXML" ); - equal( jQuery("thing", resp).length, 2, "things in responseXML" ); - start(); - }, - error: function(_1,_2,error) { - ok( false, error ); - start(); + function nocallback( msg ) { + return function() { + equal( typeof this.url, "string", "context is settings on callback " + msg ); + }; } - }); -}); -test("jQuery.ajax - HEAD requests", function() { - expect(2); + jQuery("#foo").add( context ) + .ajaxSend( event ) + .ajaxComplete( event ) + .ajaxError( event ) + .ajaxSuccess( event ); - stop(); - jQuery.ajax({ - url: url("data/name.html"), - type: "HEAD", - success: function(data, status, xhr){ - var h = xhr.getAllResponseHeaders(); - ok( /Date/i.test(h), "No Date in HEAD response" ); + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: callback("beforeSend"), + success: callback("success"), + error: callback("error"), + complete: function() { + callback("complete").call( this ); - jQuery.ajax({ - url: url("data/name.html"), - data: { "whip_it": "good" }, - type: "HEAD", - success: function(data, status, xhr){ - var h = xhr.getAllResponseHeaders(); - ok( /Date/i.test(h), "No Date in HEAD response with data" ); - start(); - } - }); - } + jQuery.ajax({ + url: url("data/404.html"), + context: context, + beforeSend: callback("beforeSend"), + error: callback("error"), + complete: function() { + callback("complete").call( this ); + + jQuery("#foo").add( context ).unbind(); + + jQuery.ajax({ + url: url("data/404.html"), + beforeSend: nocallback("beforeSend"), + error: nocallback("error"), + complete: function() { + nocallback("complete").call( this ); + start(); + } + }); + } + }); + }, + context: context + }); }); -}); - -test("jQuery.ajax - beforeSend", function() { - expect(1); - stop(); + test( "jQuery.ajax context modification", function() { + expect( 1 ); - var check = false; + stop(); - jQuery.ajaxSetup({ timeout: 0 }); + var obj = {}; - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(xml) { - check = true; - }, - success: function(data) { - ok( check, "check beforeSend was executed" ); - start(); - } - }); -}); + jQuery.ajax({ + url: url("data/name.html"), + context: obj, + beforeSend: function() { + this.test = "foo"; + }, + complete: function() { + start(); + } + }); -test("jQuery.ajax - beforeSend, cancel request (#2688)", function() { - expect(2); - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function() { - ok( true, "beforeSend got called, canceling" ); - return false; - }, - success: function() { - ok( false, "request didn't get canceled" ); - }, - complete: function() { - ok( false, "request didn't get canceled" ); - }, - error: function() { - ok( false, "request didn't get canceled" ); - } - }).fail(function( _, reason ) { - strictEqual( reason, "canceled", "canceled request must fail with 'canceled' status text" ); + equal( obj.test, "foo", "Make sure the original object is maintained." ); }); -}); -test("jQuery.ajax - beforeSend, cancel request manually", function() { - expect(2); - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(xhr) { - ok( true, "beforeSend got called, canceling" ); - xhr.abort(); - }, - success: function() { - ok( false, "request didn't get canceled" ); - }, - complete: function() { - ok( false, "request didn't get canceled" ); - }, - error: function() { - ok( false, "request didn't get canceled" ); - } - }).fail(function( _, reason ) { - strictEqual( reason, "canceled", "manually canceled request must fail with 'canceled' status text" ); - }); -}); + test( "jQuery.ajax context modification through ajaxSetup", function() { + expect( 4 ); -window["foobar"] = null; -window["testFoo"] = undefined; + stop(); -test("jQuery.ajax - dataType html", function() { - expect(5); - stop(); + var obj = {}; - var verifyEvaluation = function() { - equal( window["testFoo"], "foo", "Check if script was evaluated for datatype html" ); - equal( window["foobar"], "bar", "Check if script src was evaluated for datatype html" ); + jQuery.ajaxSetup({ + context: obj + }); - start(); - }; + strictEqual( jQuery.ajaxSettings.context, obj, "Make sure the context is properly set in ajaxSettings." ); - jQuery.ajax({ - dataType: "html", - url: url("data/test.html"), - success: function(data) { - jQuery("#ap").html(data); - ok( data.match(/^html text/), "Check content for datatype html" ); - setTimeout(verifyEvaluation, 600); - } + jQuery.ajax({ + url: url("data/name.html"), + complete: function() { + strictEqual( this, obj, "Make sure the original object is maintained." ); + jQuery.ajax({ + url: url("data/name.html"), + context: {}, + complete: function() { + ok( this !== obj, "Make sure overidding context is possible." ); + jQuery.ajaxSetup({ + context: false + }); + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function() { + this.test = "foo2"; + }, + complete: function() { + ok( this !== obj, "Make sure unsetting context is possible." ); + start(); + } + }); + } + }); + } + }); }); -}); - -test("synchronous request", function() { - expect(1); - var response = jQuery.ajax({ - url: url("data/json_obj.js"), - dataType: "text", - async: false - }).responseText; - - ok( /^\{ "data"/.test( response ), "check returned text" ); -}); - -test("synchronous request with callbacks", function() { - expect(2); - var result; - jQuery.ajax({url: url("data/json_obj.js"), async: false, dataType: "text", success: function(data) { ok(true, "sucess callback executed"); result = data; } }); - ok( /^\{ "data"/.test( result ), "check returned text" ); -}); - -test("pass-through request object", function() { - expect(8); - stop(); - - var target = "data/name.html"; - var successCount = 0; - var errorCount = 0; - var errorEx = ""; - var success = function() { - successCount++; - }; - jQuery("#foo").ajaxError(function (e, xml, s, ex) { - errorCount++; - errorEx += ": " + xml.status; - }); - jQuery("#foo").one("ajaxStop", function () { - equal(successCount, 5, "Check all ajax calls successful"); - equal(errorCount, 0, "Check no ajax errors (status" + errorEx + ")"); - jQuery("#foo").unbind("ajaxError"); - - start(); - }); - - ok( jQuery.get(url(target), success), "get" ); - ok( jQuery.post(url(target), success), "post" ); - ok( jQuery.getScript(url("data/test.js"), success), "script" ); - ok( jQuery.getJSON(url("data/json_obj.js"), success), "json" ); - ok( jQuery.ajax({url: url(target), success: success}), "generic" ); -}); - -test("ajax cache", function () { - expect(18); - stop(); + test( "jQuery.ajax() - disabled globals", function() { + expect( 3 ); + stop(); - var count = 0; + jQuery("#foo").ajaxStart(function() { + ok( false, "ajaxStart" ); + }).ajaxStop(function() { + ok( false, "ajaxStop" ); + }).ajaxSend(function() { + ok( false, "ajaxSend" ); + }).ajaxComplete(function() { + ok( false, "ajaxComplete" ); + }).ajaxError(function() { + ok( false, "ajaxError" ); + }).ajaxSuccess(function() { + ok( false, "ajaxSuccess" ); + }); - jQuery("#firstp").bind("ajaxSuccess", function (e, xml, s) { - var re = /_=(.*?)(&|$)/g; - var oldOne = null; - for (var i = 0; i < 6; i++) { - var ret = re.exec(s.url); - if (!ret) { - break; + jQuery.ajax({ + global: false, + url: url("data/name.html"), + beforeSend: function() { + ok( true, "beforeSend" ); + }, + success: function() { + ok( true, "success" ); + }, + error: function() { + ok( false, "error" ); + }, + complete: function() { + ok( true, "complete" ); + setTimeout(function() { + start(); + }, 13 ); } - oldOne = ret[1]; - } - equal(i, 1, "Test to make sure only one 'no-cache' parameter is there"); - ok(oldOne != "tobereplaced555", "Test to be sure parameter (if it was there) was replaced"); - if(++count == 6) { - start(); - } + }); }); - ok( jQuery.ajax({url: "data/text.php", cache:false}), "test with no parameters" ); - ok( jQuery.ajax({url: "data/text.php?pizza=true", cache:false}), "test with 1 parameter" ); - ok( jQuery.ajax({url: "data/text.php?_=tobereplaced555", cache:false}), "test with _= parameter" ); - ok( jQuery.ajax({url: "data/text.php?pizza=true&_=tobereplaced555", cache:false}), "test with 1 parameter plus _= one" ); - ok( jQuery.ajax({url: "data/text.php?_=tobereplaced555&tv=false", cache:false}), "test with 1 parameter plus _= one before it" ); - ok( jQuery.ajax({url: "data/text.php?name=David&_=tobereplaced555&washere=true", cache:false}), "test with 2 parameters surrounding _= one" ); -}); + test( "jQuery.ajax - xml: non-namespace elements inside namespaced elements", function() { + expect( 3 ); -/* - * Test disabled. - * The assertions expect that the passed-in object will be modified, - * which shouldn't be the case. Fixes #5439. -test("global ajaxSettings", function() { - expect(2); + stop(); - var tmp = jQuery.extend({}, jQuery.ajaxSettings); - var orig = { url: "data/with_fries.xml" }; - var t; + jQuery.ajax({ + url: url("data/with_fries.xml"), + dataType: "xml", + success: function( resp ) { + equal( jQuery( "properties", resp ).length, 1, "properties in responseXML" ); + equal( jQuery( "jsconf", resp ).length, 1, "jsconf in responseXML" ); + equal( jQuery( "thing", resp ).length, 2, "things in responseXML" ); + start(); + } + }); + }); - jQuery.ajaxSetup({ data: {foo: "bar", bar: "BAR"} }); + test( "jQuery.ajax - xml: non-namespace elements inside namespaced elements (over JSONP)", function() { + expect( 3 ); + stop(); + jQuery.ajax({ + url: url("data/with_fries_over_jsonp.php"), + dataType: "jsonp xml", + success: function( resp ) { + equal( jQuery( "properties", resp ).length, 1, "properties in responseXML" ); + equal( jQuery( "jsconf", resp ).length, 1, "jsconf in responseXML" ); + equal( jQuery( "thing", resp ).length, 2, "things in responseXML" ); + start(); + }, + error: function( _1, _2, error ) { + ok( false, error ); + start(); + } + }); + }); - t = jQuery.extend({}, orig); - t.data = {}; - jQuery.ajax(t); - ok( t.url.indexOf("foo") > -1 && t.url.indexOf("bar") > -1, "Check extending {}" ); + test( "jQuery.ajax - HEAD requests", function() { + expect( 2 ); - t = jQuery.extend({}, orig); - t.data = { zoo: "a", ping: "b" }; - jQuery.ajax(t); - ok( t.url.indexOf("ping") > -1 && t.url.indexOf("zoo") > -1 && t.url.indexOf("foo") > -1 && t.url.indexOf("bar") > -1, "Check extending { zoo: "a", ping: "b" }" ); + stop(); + jQuery.ajax({ + url: url("data/name.html"), + type: "HEAD", + success: function( data, status, xhr ) { + var h = xhr.getAllResponseHeaders(); + ok( /Date/i.test( h ), "No Date in HEAD response" ); - jQuery.ajaxSettings = tmp; -}); -*/ - -test("load(String)", function() { - expect(2); - stop(); // check if load can be called with only url - jQuery.ajaxSetup({ - beforeSend: function() { - strictEqual( this.type, "GET", "no data means GET request" ); - } - }); - jQuery("#first").load("data/name.html", function() { - start(); - }); - jQuery.ajaxSetup({ - beforeSend: null - }); -}); + jQuery.ajax({ + url: url("data/name.html"), + data: { + "whip_it": "good" + }, + type: "HEAD", + success: function( data, status, xhr ) { + var h = xhr.getAllResponseHeaders(); + ok( /Date/i.test( h ), "No Date in HEAD response with data" ); + start(); + } + }); + } + }); -test("load(String,null)", function() { - expect(2); - stop(); // check if load can be called with url and null data - jQuery.ajaxSetup({ - beforeSend: function() { - strictEqual( this.type, "GET", "no data means GET request" ); - } - }); - jQuery("#first").load("data/name.html", null, function() { - start(); }); -}); -test("load(String,undefined)", function() { - expect(2); - stop(); // check if load can be called with url and null data - jQuery.ajaxSetup({ - beforeSend: function() { - strictEqual( this.type, "GET", "no data means GET request" ); - } + test( "jQuery.ajax - beforeSend", function() { + expect( 1 ); + stop(); + + var check = false; + + jQuery.ajaxSetup({ + timeout: 0 + }); + + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function( xml ) { + check = true; + }, + success: function( data ) { + ok( check, "check beforeSend was executed" ); + start(); + } + }); }); - jQuery("#first").load("data/name.html", undefined, function() { - start(); + + test( "jQuery.ajax - beforeSend, cancel request (#2688)", function() { + expect( 2 ); + + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function() { + ok( true, "beforeSend got called, canceling" ); + return false; + }, + success: function() { + ok( false, "request didn't get canceled" ); + }, + complete: function() { + ok( false, "request didn't get canceled" ); + }, + error: function() { + ok( false, "request didn't get canceled" ); + } + }).fail(function( _, reason ) { + strictEqual( reason, "canceled", "canceled request must fail with 'canceled' status text" ); + }); }); -}); -test("load('url selector')", function() { - expect(1); - stop(); // check if load can be called with only url - jQuery("#first").load("data/test3.html div.user", function(){ - equal( jQuery(this).children("div").length, 2, "Verify that specific elements were injected" ); - start(); + test( "jQuery.ajax - beforeSend, cancel request manually", function() { + expect( 2 ); + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: function( xhr ) { + ok( true, "beforeSend got called, canceling" ); + xhr.abort(); + }, + success: function() { + ok( false, "request didn't get canceled" ); + }, + complete: function() { + ok( false, "request didn't get canceled" ); + }, + error: function() { + ok( false, "request didn't get canceled" ); + } + }).fail(function( _, reason ) { + strictEqual( reason, "canceled", "manually canceled request must fail with 'canceled' status text" ); + }); }); -}); -test("load(String, Function) with ajaxSetup on dataType json, see #2046", function() { - expect(1); - stop(); - jQuery.ajaxSetup({ dataType: "json" }); - jQuery("#first").ajaxComplete(function (e, xml, s) { - equal( s.dataType, "html", "Verify the load() dataType was html" ); - jQuery("#first").unbind("ajaxComplete"); - jQuery.ajaxSetup({ dataType: "" }); - start(); - }); - jQuery("#first").load("data/test3.html"); -}); + window["foobar"] = null; + window["testFoo"] = undefined; -test("load(String, Function) - simple: inject text into DOM", function() { - expect(2); - stop(); - jQuery("#first").load(url("data/name.html"), function() { - ok( /^ERROR/.test(jQuery("#first").text()), "Check if content was injected into the DOM" ); - start(); - }); -}); + test( "jQuery.ajax - dataType html", function() { + expect( 5 ); + stop(); -test("load(String, Function) - check scripts", function() { - expect(7); - stop(); + var verifyEvaluation = function() { + equal( window["testFoo"], "foo", "Check if script was evaluated for datatype html" ); + equal( window["foobar"], "bar", "Check if script src was evaluated for datatype html" ); - var verifyEvaluation = function() { - equal( window["foobar"], "bar", "Check if script src was evaluated after load" ); - equal( jQuery("#ap").html(), "bar", "Check if script evaluation has modified DOM"); + start(); + }; - start(); - }; - jQuery("#first").load(url("data/test.html"), function() { - ok( jQuery("#first").html().match(/^html text/), "Check content after loading html" ); - equal( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM"); - equal( window["testFoo"], "foo", "Check if script was evaluated after load" ); - setTimeout(verifyEvaluation, 600); + jQuery.ajax({ + dataType: "html", + url: url("data/test.html"), + success: function( data ) { + jQuery("#ap").html( data ); + ok( data.match( /^html text/ ), "Check content for datatype html" ); + setTimeout( verifyEvaluation, 600 ); + } + }); }); -}); -test("load(String, Function) - check file with only a script tag", function() { - expect(3); - stop(); - - jQuery("#first").load(url("data/test2.html"), function() { - equal( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM"); - equal( window["testFoo"], "foo", "Check if script was evaluated after load" ); + test( "synchronous request", function() { + expect( 1 ); + var response = jQuery.ajax({ + url: url("data/json_obj.js"), + dataType: "text", + async: false + }).responseText; - start(); + ok( /^\{ "data"/.test( response ), "check returned text" ); }); -}); -test("load(String, Function) - dataFilter in ajaxSettings", function() { - expect(2); - stop(); - jQuery.ajaxSetup({ dataFilter: function() { return "Hello World"; } }); - var div = jQuery("
").load(url("data/name.html"), function(responseText) { - strictEqual( div.html(), "Hello World" , "Test div was filled with filtered data" ); - strictEqual( responseText, "Hello World" , "Test callback receives filtered data" ); - jQuery.ajaxSetup({ dataFilter: 0 }); - start(); + test( "synchronous request with callbacks", function() { + expect( 2 ); + var result; + jQuery.ajax({ + url: url("data/json_obj.js"), + async: false, + dataType: "text", + success: function(data) { + ok( true, "sucess callback executed" ); + result = data; + } + }); + ok( /^\{ "data"/.test( result ), "check returned text" ); }); -}); -test("load(String, Object, Function)", function() { - expect(2); - stop(); + test( "pass-through request object", function() { + expect( 8 ); + stop(); - jQuery("
").load(url("data/params_html.php"), { "foo": 3, "bar": "ok" }, function() { - var $post = jQuery(this).find("#post"); - equal( $post.find("#foo").text(), "3", "Check if a hash of data is passed correctly"); - equal( $post.find("#bar").text(), "ok", "Check if a hash of data is passed correctly"); - start(); - }); -}); + var target = "data/name.html"; + var successCount = 0; + var errorCount = 0; + var errorEx = ""; + var success = function() { + successCount++; + }; + jQuery("#foo").ajaxError(function( e, xml, s, ex ) { + errorCount++; + errorEx += ": " + xml.status; + }); + jQuery("#foo").one( "ajaxStop", function() { + equal( successCount, 5, "Check all ajax calls successful" ); + equal( errorCount, 0, "Check no ajax errors (status" + errorEx + ")" ); + jQuery("#foo").unbind("ajaxError"); -test("load(String, String, Function)", function() { - expect(2); - stop(); + start(); + }); - jQuery("
").load(url("data/params_html.php"), "foo=3&bar=ok", function() { - var $get = jQuery(this).find("#get"); - equal( $get.find("#foo").text(), "3", "Check if a string of data is passed correctly"); - equal( $get.find("#bar").text(), "ok", "Check if a of data is passed correctly"); - start(); + ok( jQuery.get( url(target), success ), "get" ); + ok( jQuery.post( url(target), success ), "post" ); + ok( jQuery.getScript( url("data/test.js"), success ), "script" ); + ok( jQuery.getJSON( url("data/json_obj.js"), success ), "json" ); + ok( jQuery.ajax({ + url: url( target ), + success: success + }), "generic" ); }); -}); -asyncTest("load() - data specified in ajaxSettings is merged in (#10524)", 1, function() { - jQuery.ajaxSetup({ - data: { "foo": "bar" } + test( "ajax cache", function() { + expect( 18 ); + + stop(); + + var count = 0; + + jQuery("#firstp").bind( "ajaxSuccess", function( e, xml, s ) { + var re = /_=(.*?)(&|$)/g; + var oldOne = null; + for ( var i = 0; i < 6; i++ ) { + var ret = re.exec( s.url ); + if ( !ret ) { + break; + } + oldOne = ret[ 1 ]; + } + equal( i, 1, "Test to make sure only one 'no-cache' parameter is there" ); + ok( oldOne != "tobereplaced555", "Test to be sure parameter (if it was there) was replaced" ); + if ( ++count == 6 ) { + start(); + } + }); + + ok( jQuery.ajax({ + url: "data/text.php", + cache: false + }), "test with no parameters" ); + ok( jQuery.ajax({ + url: "data/text.php?pizza=true", + cache: false + }), "test with 1 parameter" ); + ok( jQuery.ajax({ + url: "data/text.php?_=tobereplaced555", + cache: false + }), "test with _= parameter" ); + ok( jQuery.ajax({ + url: "data/text.php?pizza=true&_=tobereplaced555", + cache: false + }), "test with 1 parameter plus _= one" ); + ok( jQuery.ajax({ + url: "data/text.php?_=tobereplaced555&tv=false", + cache: false + }), "test with 1 parameter plus _= one before it" ); + ok( jQuery.ajax({ + url: "data/text.php?name=David&_=tobereplaced555&washere=true", + cache: false + }), "test with 2 parameters surrounding _= one" ); }); - var data = { - "baz": 1 - }; + /* + * Test disabled. + * The assertions expect that the passed-in object will be modified, + * which shouldn't be the case. Fixes #5439. + test( "global ajaxSettings", function() { + expect( 2 ); + + var t, + tmp = jQuery.extend({}, jQuery.ajaxSettings ), + orig = { + url: "data/with_fries.xml" + }; - jQuery("#foo").load( "data/echoQuery.php", data).ajaxComplete(function( event, jqXHR, options ) { - ok( ~options.data.indexOf("foo=bar"), "Data from ajaxSettings was used" ); jQuery.ajaxSetup({ - data: null + data: { + foo: "bar", + bar: "BAR" + } }); - start(); - }); -}); -asyncTest("load() - callbacks get the correct parameters", 8, function() { - var slice = [].slice, - completeArgs = {}; + t = jQuery.extend({}, orig ); + t.data = {}; + jQuery.ajax( t ); + ok( t.url.indexOf("foo") > -1 && t.url.indexOf("bar") > -1, "Check extending {}" ); - jQuery.ajaxSetup({ - success: function( _, status, jqXHR ) { - completeArgs[ this.url ] = [ jqXHR.responseText, status, jqXHR ]; - }, - error: function( jqXHR, status ) { - completeArgs[ this.url ] = [ jqXHR.responseText, status, jqXHR ]; - } + t = jQuery.extend({}, orig ); + t.data = { + zoo: "a", + ping: "b" + }; + jQuery.ajax( t ); + ok( t.url.indexOf("ping") > -1 && t.url.indexOf("zoo") > -1 && t.url.indexOf("foo") > -1 && t.url.indexOf("bar") > -1, "Check extending { zoo: "a", ping: "b" }" ); + + jQuery.ajaxSettings = tmp; }); + */ - jQuery.when.apply( jQuery, jQuery.map([ - { - type: "success", - url: "data/echoQuery.php?arg=pop" - }, - { - type: "error", - url: "data/404.php" - } - ], function( options ) { - return jQuery.Deferred(function( defer ) { - jQuery("#foo").load( options.url, function() { - var args = arguments; - strictEqual( completeArgs[ options.url ].length, args.length, "same number of arguments (" + options.type + ")" ); - jQuery.each( completeArgs[ options.url ], function( i, value ) { - strictEqual( args[ i ], value, "argument #" + i + " is the same (" + options.type + ")" ); - }); - defer.resolve(); - }); + test( "load(String)", function() { + expect( 2 ); + stop(); // check if load can be called with only url + jQuery.ajaxSetup({ + beforeSend: function() { + strictEqual( this.type, "GET", "no data means GET request" ); + } + }); + jQuery("#first").load( "data/name.html", function() { + start(); }); - }) ).always(function() { jQuery.ajaxSetup({ - success: null, - error: null + beforeSend: null }); - start(); }); -}); -test("jQuery.get(String, Function) - data in ajaxSettings (#8277)", function() { - expect(1); - stop(); - jQuery.ajaxSetup({ - data: "helloworld" + test( "load(String,null)", function() { + expect( 2 ); + stop(); // check if load can be called with url and null data + jQuery.ajaxSetup({ + beforeSend: function() { + strictEqual( this.type, "GET", "no data means GET request" ); + } + }); + jQuery("#first").load( "data/name.html", null, function() { + start(); + }); }); - jQuery.get(url("data/echoQuery.php"), function(data) { - ok( /helloworld$/.test( data ), "Data from ajaxSettings was used"); + + test( "load(String,undefined)", function() { + expect( 2 ); + stop(); // check if load can be called with url and null data jQuery.ajaxSetup({ - data: null + beforeSend: function() { + strictEqual( this.type, "GET", "no data means GET request" ); + } + }); + jQuery("#first").load( "data/name.html", undefined, function() { + start(); }); - start(); }); -}); -test("jQuery.get(String, Hash, Function) - parse xml and use text() on nodes", function() { - expect(2); - stop(); - jQuery.get(url("data/dashboard.xml"), function(xml) { - var content = []; - jQuery("tab", xml).each(function() { - content.push(jQuery(this).text()); + test( "load('url selector')", function() { + expect( 1 ); + stop(); // check if load can be called with only url + jQuery("#first").load( "data/test3.html div.user", function() { + equal( jQuery( this ).children("div").length, 2, "Verify that specific elements were injected" ); + start(); }); - equal( content[0], "blabla", "Check first tab"); - equal( content[1], "blublu", "Check second tab"); - start(); }); -}); -test("jQuery.getScript(String, Function) - with callback", function() { - expect(3); - stop(); - jQuery.getScript(url("data/test.js"), function( data, _, jqXHR ) { - equal( foobar, "bar", "Check if script was evaluated" ); - strictEqual( data, jqXHR.responseText, "Same-domain script requests returns the source of the script (#8082)" ); - setTimeout(function() { + test( "load(String, Function) with ajaxSetup on dataType json, see #2046", function() { + expect( 1 ); + stop(); + jQuery.ajaxSetup({ + dataType: "json" + }); + jQuery("#first").ajaxComplete(function( e, xml, s ) { + equal( s.dataType, "html", "Verify the load() dataType was html" ); + jQuery("#first").unbind("ajaxComplete"); + jQuery.ajaxSetup({ + dataType: "" + }); start(); - }, 1000 ); + }); + jQuery("#first").load("data/test3.html"); }); -}); -test("jQuery.getScript(String, Function) - no callback", function() { - expect(1); - stop(); - jQuery.getScript(url("data/test.js"), function(){ - start(); + test( "load(String, Function) - simple: inject text into DOM", function() { + expect( 2 ); + stop(); + jQuery("#first").load( url("data/name.html"), function() { + ok( /^ERROR/.test( jQuery("#first").text() ), "Check if content was injected into the DOM" ); + start(); + }); }); -}); -jQuery.each( [ "Same Domain", "Cross Domain" ] , function( crossDomain , label ) { + test( "load(String, Function) - check scripts", function() { + expect( 7 ); + stop(); - test("jQuery.ajax() - JSONP, " + label, function() { - expect(24); + var verifyEvaluation = function() { + equal( window["foobar"], "bar", "Check if script src was evaluated after load" ); + equal( jQuery("#ap").html(), "bar", "Check if script evaluation has modified DOM"); - var count = 0; - function plus(){ - if ( ++count == 20 ) { - start(); - } - } + start(); + }; + jQuery("#first").load( url("data/test.html"), function() { + ok( jQuery("#first").html().match( /^html text/ ), "Check content after loading html" ); + equal( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM" ); + equal( window["testFoo"], "foo", "Check if script was evaluated after load" ); + setTimeout( verifyEvaluation, 600 ); + }); + }); + test( "load(String, Function) - check file with only a script tag", function() { + expect( 3 ); stop(); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data.data, "JSON results returned (GET, no callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, no callback)" ); - plus(); - } + jQuery("#first").load( url("data/test2.html"), function() { + equal( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM"); + equal( window["testFoo"], "foo", "Check if script was evaluated after load" ); + + start(); }); + }); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data.data, ( this.alreadyDone ? "this re-used" : "first request" ) + ": JSON results returned (GET, no callback)" ); - if ( !this.alreadyDone ) { - this.alreadyDone = true; - jQuery.ajax( this ); - } else { - plus(); - } - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, no callback)" ); - plus(); + test( "load(String, Function) - dataFilter in ajaxSettings", function() { + expect( 2 ); + stop(); + jQuery.ajaxSetup({ + dataFilter: function() { + return "Hello World"; } }); + var div = jQuery("
").load( url("data/name.html"), function( responseText ) { + strictEqual( div.html(), "Hello World", "Test div was filled with filtered data" ); + strictEqual( responseText, "Hello World", "Test callback receives filtered data" ); + jQuery.ajaxSetup({ + dataFilter: 0 + }); + start(); + }); + }); - jQuery.ajax({ - url: "data/jsonp.php?callback=?", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data.data, "JSON results returned (GET, url callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, url callback)" ); - plus(); - } + test( "load(String, Object, Function)", function() { + expect( 2 ); + stop(); + + jQuery("
").load( url("data/params_html.php"), { + "foo": 3, + "bar": "ok" + }, function() { + var $post = jQuery( this ).find("#post"); + equal( $post.find("#foo").text(), "3", "Check if a hash of data is passed correctly" ); + equal( $post.find("#bar").text(), "ok", "Check if a hash of data is passed correctly" ); + start(); }); + }); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - data: "callback=?", - success: function(data){ - ok( data.data, "JSON results returned (GET, data callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, data callback)" ); - plus(); - } + test( "load(String, String, Function)", function() { + expect( 2 ); + stop(); + + jQuery("
").load( url("data/params_html.php"), "foo=3&bar=ok", function() { + var $get = jQuery( this ).find("#get"); + equal( $get.find("#foo").text(), "3", "Check if a string of data is passed correctly" ); + equal( $get.find("#bar").text(), "ok", "Check if a of data is passed correctly" ); + start(); }); + }); - jQuery.ajax({ - url: "data/jsonp.php?callback=??", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data.data, "JSON results returned (GET, url context-free callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, url context-free callback)" ); - plus(); + asyncTest( "load() - data specified in ajaxSettings is merged in (#10524)", 1, function() { + jQuery.ajaxSetup({ + data: { + "foo": "bar" } }); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - data: "callback=??", - success: function(data){ - ok( data.data, "JSON results returned (GET, data context-free callback)" ); - plus(); + var data = { + "baz": 1 + }; + + jQuery("#foo") + .load( "data/echoQuery.php", data ) + .ajaxComplete(function( event, jqXHR, options ) { + ok( ~options.data.indexOf("foo=bar"), "Data from ajaxSettings was used" ); + jQuery.ajaxSetup({ + data: null + }); + start(); + }); + }); + + asyncTest( "load() - callbacks get the correct parameters", 8, function() { + var slice = [].slice, + completeArgs = {}; + + jQuery.ajaxSetup({ + success: function( _, status, jqXHR ) { + completeArgs[ this.url ] = [ jqXHR.responseText, status, jqXHR ]; }, - error: function(data){ - ok( false, "Ajax error JSON (GET, data context-free callback)" ); - plus(); + error: function( jqXHR, status ) { + completeArgs[ this.url ] = [ jqXHR.responseText, status, jqXHR ]; } }); - jQuery.ajax({ - url: "data/jsonp.php/??", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data.data, "JSON results returned (GET, REST-like)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, REST-like)" ); - plus(); - } + jQuery.when.apply( + /* jQuery.when.apply arguments start */ + jQuery, + jQuery.map([ + { + type: "success", + url: "data/echoQuery.php?arg=pop" + }, + { + type: "error", + url: "data/404.php" + } + ], + function( options ) { + return jQuery.Deferred(function( defer ) { + jQuery("#foo").load( options.url, function() { + var args = arguments; + strictEqual( completeArgs[ options.url ].length, args.length, "same number of arguments (" + options.type + ")" ); + jQuery.each( completeArgs[ options.url ], function( i, value ) { + strictEqual( args[ i ], value, "argument #" + i + " is the same (" + options.type + ")" ); + }); + defer.resolve(); + }); + }); + }) + /* jQuery.when.apply arguments end*/ + ).always(function() { + jQuery.ajaxSetup({ + success: null, + error: null + }); + start(); }); + }); - jQuery.ajax({ - url: "data/jsonp.php/???json=1", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - strictEqual( jQuery.type(data), "array", "JSON results returned (GET, REST-like with param)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, REST-like with param)" ); - plus(); - } + test( "jQuery.get(String, Function) - data in ajaxSettings (#8277)", function() { + expect( 1 ); + stop(); + jQuery.ajaxSetup({ + data: "helloworld" }); + jQuery.get( url("data/echoQuery.php"), function( data ) { + ok( /helloworld$/.test( data ), "Data from ajaxSettings was used" ); + jQuery.ajaxSetup({ + data: null + }); + start(); + }); + }); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonp: "callback", - success: function(data){ - ok( data["data"], "JSON results returned (GET, data obj callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, data obj callback)" ); - plus(); - } + test( "jQuery.get(String, Hash, Function) - parse xml and use text() on nodes", function() { + expect( 2 ); + stop(); + jQuery.get( url("data/dashboard.xml"), function( xml ) { + var content = []; + jQuery( "tab", xml ).each(function() { + content.push( jQuery( this ).text() ); + }); + equal( content[ 0 ], "blabla", "Check first tab" ); + equal( content[ 1 ], "blublu", "Check second tab" ); + start(); }); + }); - window["jsonpResults"] = function(data) { - ok( data["data"], "JSON results returned (GET, custom callback function)" ); - window["jsonpResults"] = undefined; - plus(); - }; + test( "jQuery.getScript(String, Function) - with callback", function() { + expect( 3 ); + stop(); + jQuery.getScript( url("data/test.js"), function( data, _, jqXHR ) { + equal( foobar, "bar", "Check if script was evaluated" ); + strictEqual( data, jqXHR.responseText, "Same-domain script requests returns the source of the script (#8082)" ); + setTimeout(function() { + start(); + }, 1000 ); + }); + }); + + test( "jQuery.getScript(String, Function) - no callback", function() { + expect( 1 ); + stop(); + jQuery.getScript( url("data/test.js"), function() { + start(); + }); + }); + + jQuery.each( [ "Same Domain", "Cross Domain" ], function( crossDomain, label ) { + + test( "jQuery.ajax() - JSONP, " + label, function() { + expect( 24 ); + + var count = 0; + function plus() { + if ( ++count == 20 ) { + start(); + } + } + + stop(); + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data.data, "JSON results returned (GET, no callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, no callback)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data.data, ( this.alreadyDone ? "this re-used" : "first request" ) + ": JSON results returned (GET, no callback)" ); + if ( !this.alreadyDone ) { + this.alreadyDone = true; + jQuery.ajax( this ); + } else { + plus(); + } + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, no callback)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php?callback=?", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data.data, "JSON results returned (GET, url callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, url callback)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + data: "callback=?", + success: function( data ) { + ok( data.data, "JSON results returned (GET, data callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, data callback)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php?callback=??", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data.data, "JSON results returned (GET, url context-free callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, url context-free callback)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + data: "callback=??", + success: function( data ) { + ok( data.data, "JSON results returned (GET, data context-free callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, data context-free callback)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php/??", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data.data, "JSON results returned (GET, REST-like)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, REST-like)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php/???json=1", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + strictEqual( jQuery.type( data ), "array", "JSON results returned (GET, REST-like with param)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, REST-like with param)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + jsonp: "callback", + success: function( data ) { + ok( data["data"], "JSON results returned (GET, data obj callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, data obj callback)" ); + plus(); + } + }); + + window["jsonpResults"] = function( data ) { + ok( data["data"], "JSON results returned (GET, custom callback function)" ); + window["jsonpResults"] = undefined; + plus(); + }; + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + jsonpCallback: "jsonpResults", + success: function( data ) { + ok( data.data, "JSON results returned (GET, custom callback name)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, custom callback name)" ); + plus(); + } + }); + + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + jsonpCallback: "functionToCleanUp", + success: function( data ) { + ok( data["data"], "JSON results returned (GET, custom callback name to be cleaned up)" ); + strictEqual( window["functionToCleanUp"], undefined, "Callback was removed (GET, custom callback name to be cleaned up)" ); + plus(); + var xhr; + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + jsonpCallback: "functionToCleanUp", + beforeSend: function( jqXHR ) { + xhr = jqXHR; + return false; + } + }); + xhr.error(function() { + ok( true, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); + strictEqual( window["functionToCleanUp"], undefined, "Callback was removed after early abort (GET, custom callback name to be cleaned up)" ); + plus(); + }); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); + plus(); + } + }); + + jQuery.ajax({ + type: "POST", + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data["data"], "JSON results returned (POST, no callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, data obj callback)" ); + plus(); + } + }); + + jQuery.ajax({ + type: "POST", + url: "data/jsonp.php", + data: "callback=?", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data["data"], "JSON results returned (POST, data callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (POST, data callback)" ); + plus(); + } + }); + + jQuery.ajax({ + type: "POST", + url: "data/jsonp.php", + jsonp: "callback", + dataType: "jsonp", + crossDomain: crossDomain, + success: function( data ) { + ok( data["data"], "JSON results returned (POST, data obj callback)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (POST, data obj callback)" ); + plus(); + } + }); + + //#7578 + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + beforeSend: function() { + strictEqual( this.cache, false, "cache must be false on JSON request" ); + plus(); + return false; + } + }); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonpCallback: "jsonpResults", - success: function(data){ - ok( data.data, "JSON results returned (GET, custom callback name)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, custom callback name)" ); - plus(); - } - }); + jQuery.ajax({ + url: "data/jsonp.php?callback=XXX", + dataType: "jsonp", + jsonp: false, + jsonpCallback: "XXX", + crossDomain: crossDomain, + beforeSend: function() { + ok( /^data\/jsonp.php\?callback=XXX&_=\d+$/.test( this.url ), "The URL wasn't messed with (GET, custom callback name with no url manipulation)" ); + plus(); + }, + success: function( data ) { + ok( data["data"], "JSON results returned (GET, custom callback name with no url manipulation)" ); + plus(); + }, + error: function( data ) { + ok( false, "Ajax error JSON (GET, custom callback name with no url manipulation)" ); + plus(); + } + }); - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - jsonpCallback: "functionToCleanUp", - success: function(data){ - ok( data["data"], "JSON results returned (GET, custom callback name to be cleaned up)" ); - strictEqual( window["functionToCleanUp"], undefined, "Callback was removed (GET, custom callback name to be cleaned up)" ); - plus(); - var xhr; + //#8205 + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + beforeSend: function() { + this.callback = this.jsonpCallback; + } + }).pipe(function() { + var previous = this; + strictEqual( previous.jsonpCallback, undefined, "jsonpCallback option is set back to default in callbacks" ); jQuery.ajax({ url: "data/jsonp.php", dataType: "jsonp", crossDomain: crossDomain, - jsonpCallback: "functionToCleanUp", - beforeSend: function( jqXHR ) { - xhr = jqXHR; + beforeSend: function() { + strictEqual( this.jsonpCallback, previous.callback, "JSONP callback name is re-used" ); return false; } }); - xhr.error(function() { - ok( true, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); - strictEqual( window["functionToCleanUp"], undefined, "Callback was removed after early abort (GET, custom callback name to be cleaned up)" ); - plus(); - }); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); - plus(); - } - }); + }).always( plus ); - jQuery.ajax({ - type: "POST", - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data["data"], "JSON results returned (POST, no callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (GET, data obj callback)" ); - plus(); - } }); + }); + + test( "jQuery.ajax() - script, Remote", function() { + expect( 2 ); + + var base = window.location.href.replace( /[^\/]*$/, "" ); + + stop(); jQuery.ajax({ - type: "POST", - url: "data/jsonp.php", - data: "callback=?", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data["data"], "JSON results returned (POST, data callback)" ); - plus(); - }, - error: function(data){ - ok( false, "Ajax error JSON (POST, data callback)" ); - plus(); + url: base + "data/test.js", + dataType: "script", + success: function( data ) { + ok( window["foobar"], "Script results returned (GET, no callback)" ); + start(); } }); + }); + + test( "jQuery.ajax() - script, Remote with POST", function() { + expect( 3 ); + + var base = window.location.href.replace( /[^\/]*$/, "" ); + + stop(); jQuery.ajax({ + url: base + "data/test.js", type: "POST", - url: "data/jsonp.php", - jsonp: "callback", - dataType: "jsonp", - crossDomain: crossDomain, - success: function(data){ - ok( data["data"], "JSON results returned (POST, data obj callback)" ); - plus(); + dataType: "script", + success: function( data, status ) { + ok( window["foobar"], "Script results returned (POST, no callback)" ); + equal( status, "success", "Script results returned (POST, no callback)" ); + start(); }, - error: function(data){ - ok( false, "Ajax error JSON (POST, data obj callback)" ); - plus(); + error: function( xhr ) { + ok( false, "ajax error, status code: " + xhr.status ); + start(); } }); + }); + + test( "jQuery.ajax() - script, Remote with scheme-less URL", function() { + expect( 2 ); + + var base = window.location.href.replace( /[^\/]*$/, "" ); + base = base.replace( /^.*?\/\//, "//" ); + + stop(); - //#7578 jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - beforeSend: function(){ - strictEqual( this.cache, false, "cache must be false on JSON request" ); - plus(); - return false; + url: base + "data/test.js", + dataType: "script", + success: function( data ) { + ok( window["foobar"], "Script results returned (GET, no callback)" ); + start(); } }); + }); + + test( "jQuery.ajax() - malformed JSON", function() { + expect( 2 ); + + stop(); jQuery.ajax({ - url: "data/jsonp.php?callback=XXX", - dataType: "jsonp", - jsonp: false, - jsonpCallback: "XXX", - crossDomain: crossDomain, - beforeSend: function() { - ok( /^data\/jsonp.php\?callback=XXX&_=\d+$/.test( this.url ) , - "The URL wasn't messed with (GET, custom callback name with no url manipulation)" ); - plus(); - }, - success: function(data){ - ok( data["data"], "JSON results returned (GET, custom callback name with no url manipulation)" ); - plus(); + url: "data/badjson.js", + dataType: "json", + success: function() { + ok( false, "Success." ); + start(); }, - error: function(data){ - ok( false, "Ajax error JSON (GET, custom callback name with no url manipulation)" ); - plus(); + error: function( xhr, msg, detailedMsg ) { + equal( "parsererror", msg, "A parse error occurred." ); + ok( /(invalid|error|exception)/i.test( detailedMsg ), "Detailed parsererror message provided" ); + start(); } }); + }); - //#8205 - jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - beforeSend: function() { - this.callback = this.jsonpCallback; - } - }).pipe(function() { - var previous = this; - strictEqual( previous.jsonpCallback, undefined, "jsonpCallback option is set back to default in callbacks" ); + test( "jQuery.ajax() - script, throws exception (#11743)", function() { + expect( 1 ); + + raises(function() { jQuery.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - crossDomain: crossDomain, - beforeSend: function() { - strictEqual( this.jsonpCallback, previous.callback, "JSONP callback name is re-used" ); - return false; + url: "data/badjson.js", + dataType: "script", + throws: true, + // TODO find a way to test this asynchronously, too + async: false, + // Global events get confused by the exception + global: false, + success: function() { + ok( false, "Success." ); + }, + error: function() { + ok( false, "Error." ); } }); - }).always( plus ); - - }); -}); - -test("jQuery.ajax() - script, Remote", function() { - expect(2); - - var base = window.location.href.replace(/[^\/]*$/, ""); - - stop(); - - jQuery.ajax({ - url: base + "data/test.js", - dataType: "script", - success: function(data){ - ok( window["foobar"], "Script results returned (GET, no callback)" ); - start(); - } - }); -}); - -test("jQuery.ajax() - script, Remote with POST", function() { - expect(3); - - var base = window.location.href.replace(/[^\/]*$/, ""); - - stop(); - - jQuery.ajax({ - url: base + "data/test.js", - type: "POST", - dataType: "script", - success: function(data, status){ - ok( window["foobar"], "Script results returned (POST, no callback)" ); - equal( status, "success", "Script results returned (POST, no callback)" ); - start(); - }, - error: function(xhr) { - ok( false, "ajax error, status code: " + xhr.status ); - start(); - } + }, "exception bubbled" ); }); -}); -test("jQuery.ajax() - script, Remote with scheme-less URL", function() { - expect(2); + test( "jQuery.ajax() - script by content-type", function() { + expect( 2 ); - var base = window.location.href.replace(/[^\/]*$/, ""); - base = base.replace(/^.*?\/\//, "//"); - - stop(); + stop(); - jQuery.ajax({ - url: base + "data/test.js", - dataType: "script", - success: function(data){ - ok( window["foobar"], "Script results returned (GET, no callback)" ); + jQuery.when( + /* jQuery.when arguments start */ + jQuery.ajax({ + url: "data/script.php", + data: { + "header": "script" + } + }), + jQuery.ajax({ + url: "data/script.php", + data: { + "header": "ecma" + } + }) + /* jQuery.when arguments end */ + ).always(function() { start(); - } + }); }); -}); - -test("jQuery.ajax() - malformed JSON", function() { - expect(2); - stop(); - - jQuery.ajax({ - url: "data/badjson.js", - dataType: "json", - success: function(){ - ok( false, "Success." ); - start(); - }, - error: function(xhr, msg, detailedMsg) { - equal( "parsererror", msg, "A parse error occurred." ); - ok( /(invalid|error|exception)/i.test(detailedMsg), "Detailed parsererror message provided" ); - start(); - } - }); -}); + test( "jQuery.ajax() - json by content-type", function() { + expect( 5 ); -test("jQuery.ajax() - script, throws exception (#11743)", function() { - expect(1); + stop(); - raises(function() { jQuery.ajax({ - url: "data/badjson.js", - dataType: "script", - throws: true, - // TODO find a way to test this asynchronously, too - async: false, - // Global events get confused by the exception - global: false, - success: function() { - ok( false, "Success." ); + url: "data/json.php", + data: { + "header": "json", + "json": "array" }, - error: function() { - ok( false, "Error." ); + success: function( json ) { + ok( json.length >= 2, "Check length" ); + equal( json[ 0 ]["name"], "John", "Check JSON: first, name" ); + equal( json[ 0 ]["age"], 21, "Check JSON: first, age" ); + equal( json[ 1 ]["name"], "Peter", "Check JSON: second, name" ); + equal( json[ 1 ]["age"], 25, "Check JSON: second, age" ); + start(); } }); - }, "exception bubbled" ); -}); - -test("jQuery.ajax() - script by content-type", function() { - expect(2); - - stop(); + }); - jQuery.when( + test( "jQuery.ajax() - json by content-type disabled with options", function() { + expect( 6 ); - jQuery.ajax({ - url: "data/script.php", - data: { "header": "script" } - }), + stop(); jQuery.ajax({ - url: "data/script.php", - data: { "header": "ecma" } - }) - - ).always(function() { - start(); + url: url("data/json.php"), + data: { + "header": "json", + "json": "array" + }, + contents: { + "json": false + }, + success: function( text ) { + equal( typeof text, "string", "json wasn't auto-determined" ); + var json = jQuery.parseJSON( text ); + ok( json.length >= 2, "Check length"); + equal( json[ 0 ]["name"], "John", "Check JSON: first, name" ); + equal( json[ 0 ]["age"], 21, "Check JSON: first, age" ); + equal( json[ 1 ]["name"], "Peter", "Check JSON: second, name" ); + equal( json[ 1 ]["age"], 25, "Check JSON: second, age" ); + start(); + } + }); }); -}); -test("jQuery.ajax() - json by content-type", function() { - expect(5); - - stop(); + test( "jQuery.getJSON(String, Hash, Function) - JSON array", function() { + expect( 5 ); + stop(); + jQuery.getJSON( + /* jQuery.getJSON arguments start */ + url("data/json.php"), + { + "json": "array" + }, + function( json ) { + ok( json.length >= 2, "Check length" ); + equal( json[ 0 ]["name"], "John", "Check JSON: first, name" ); + equal( json[ 0 ]["age"], 21, "Check JSON: first, age" ); + equal( json[ 1 ]["name"], "Peter", "Check JSON: second, name" ); + equal( json[ 1 ]["age"], 25, "Check JSON: second, age" ); + start(); + } + /* jQuery.getJSON arguments end */ + ); + }); - jQuery.ajax({ - url: "data/json.php", - data: { "header": "json", "json": "array" }, - success: function( json ) { - ok( json.length >= 2, "Check length"); - equal( json[0]["name"], "John", "Check JSON: first, name" ); - equal( json[0]["age"], 21, "Check JSON: first, age" ); - equal( json[1]["name"], "Peter", "Check JSON: second, name" ); - equal( json[1]["age"], 25, "Check JSON: second, age" ); + test( "jQuery.getJSON(String, Function) - JSON object", function() { + expect( 2 ); + stop(); + jQuery.getJSON( url("data/json.php"), function( json ) { + if ( json && json["data"] ) { + equal( json["data"]["lang"], "en", "Check JSON: lang" ); + equal( json["data"].length, 25, "Check JSON: length" ); + } start(); - } + }); }); -}); - -test("jQuery.ajax() - json by content-type disabled with options", function() { - expect(6); - stop(); + asyncTest( "jQuery.getJSON - Using Native JSON", function() { + expect( 2 ); - jQuery.ajax({ - url: url("data/json.php"), - data: { "header": "json", "json": "array" }, - contents: { - "json": false - }, - success: function( text ) { - equal( typeof text , "string" , "json wasn't auto-determined" ); - var json = jQuery.parseJSON( text ); - ok( json.length >= 2, "Check length"); - equal( json[0]["name"], "John", "Check JSON: first, name" ); - equal( json[0]["age"], 21, "Check JSON: first, age" ); - equal( json[1]["name"], "Peter", "Check JSON: second, name" ); - equal( json[1]["age"], 25, "Check JSON: second, age" ); - start(); - } - }); -}); + var old = window.JSON; -test("jQuery.getJSON(String, Hash, Function) - JSON array", function() { - expect(5); - stop(); - jQuery.getJSON(url("data/json.php"), {"json": "array"}, function(json) { - ok( json.length >= 2, "Check length"); - equal( json[0]["name"], "John", "Check JSON: first, name" ); - equal( json[0]["age"], 21, "Check JSON: first, age" ); - equal( json[1]["name"], "Peter", "Check JSON: second, name" ); - equal( json[1]["age"], 25, "Check JSON: second, age" ); - start(); - }); -}); + window.JSON = { + parse: function( str ) { + ok( true, "Verifying that parse method was run" ); + return true; + } + }; -test("jQuery.getJSON(String, Function) - JSON object", function() { - expect(2); - stop(); - jQuery.getJSON(url("data/json.php"), function(json) { - if (json && json["data"]) { - equal( json["data"]["lang"], "en", "Check JSON: lang" ); - equal( json["data"].length, 25, "Check JSON: length" ); - } - start(); + jQuery.getJSON( url("data/json.php"), function( json ) { + window.JSON = old; + equal( json, true, "Verifying return value" ); + start(); + }); }); -}); - -asyncTest("jQuery.getJSON - Using Native JSON", function() { - expect(2); - var old = window.JSON; + test( "jQuery.getJSON(String, Function) - JSON object with absolute url to local content", function() { + expect( 2 ); - window.JSON = { - parse: function(str) { - ok( true, "Verifying that parse method was run" ); - return true; - } - }; + var base = window.location.href.replace( /[^\/]*$/, "" ); - jQuery.getJSON(url("data/json.php"), function( json ) { - window.JSON = old; - equal( json, true, "Verifying return value" ); - start(); + stop(); + jQuery.getJSON( url( base + "data/json.php" ), function( json ) { + equal( json.data.lang, "en", "Check JSON: lang" ); + equal( json.data.length, 25, "Check JSON: length" ); + start(); + }); }); -}); -test("jQuery.getJSON(String, Function) - JSON object with absolute url to local content", function() { - expect(2); + test( "jQuery.post - data", 3, function() { + stop(); - var base = window.location.href.replace(/[^\/]*$/, ""); + jQuery.when( + /* jQuery.when arguments start */ + jQuery.post( + /* jQuery.post arguments start */ + url("data/name.php"), + { + xml: "5-2", + length: 3 + }, + function( xml ) { + jQuery( "math", xml ).each(function() { + equal( jQuery( "calculation", this ).text(), "5-2", "Check for XML" ); + equal( jQuery( "result", this ).text(), "3", "Check for XML" ); + }); + } + /* jQuery.post arguments end */ + ), + jQuery.ajax({ + url: url("data/echoData.php"), + type: "POST", + data: { + "test": { + "length": 7, + "foo": "bar" + } + }, + success: function( data ) { + strictEqual( data, "test%5Blength%5D=7&test%5Bfoo%5D=bar", "Check if a sub-object with a length param is serialized correctly" ); + } + }) + /* jQuery.when arguments end */ + ).always(function() { + start(); + }); - stop(); - jQuery.getJSON(url(base + "data/json.php"), function(json) { - equal( json.data.lang, "en", "Check JSON: lang" ); - equal( json.data.length, 25, "Check JSON: length" ); - start(); }); -}); -test("jQuery.post - data", 3, function() { - stop(); + test( "jQuery.post(String, Hash, Function) - simple with xml", function() { + expect( 4 ); + stop(); + var done = 0; + + jQuery.post( + /* jQuery.post arguments start */ + url("data/name.php"), + { + "xml": "5-2" + }, + function( xml ) { + jQuery( "math", xml ).each(function() { + equal( jQuery( "calculation", this ).text(), "5-2", "Check for XML" ); + equal( jQuery( "result", this ).text(), "3", "Check for XML" ); + }); + if ( ++done === 2 ) { + start(); + } + } + /* jQuery.post arguments end */ + ); - jQuery.when( - jQuery.post( url( "data/name.php" ), { xml: "5-2", length: 3 }, function( xml ) { + jQuery.post( url("data/name.php?xml=5-2"), {}, function( xml ) { jQuery( "math", xml ).each(function() { equal( jQuery( "calculation", this ).text(), "5-2", "Check for XML" ); equal( jQuery( "result", this ).text(), "3", "Check for XML" ); }); - }), - - jQuery.ajax({ - url: url("data/echoData.php"), - type: "POST", - data: { - "test": { - "length": 7, - "foo": "bar" - } - }, - success: function( data ) { - strictEqual( data, "test%5Blength%5D=7&test%5Bfoo%5D=bar", "Check if a sub-object with a length param is serialized correctly"); + if ( ++done === 2 ) { + start(); } - }) - ).always(function() { - start(); - }); - -}); - -test("jQuery.post(String, Hash, Function) - simple with xml", function() { - expect(4); - stop(); - var done = 0; - - jQuery.post(url("data/name.php"), {"xml": "5-2"}, function(xml){ - jQuery("math", xml).each(function() { - equal( jQuery("calculation", this).text(), "5-2", "Check for XML" ); - equal( jQuery("result", this).text(), "3", "Check for XML" ); }); - if ( ++done === 2 ) { - start(); - } }); - jQuery.post(url("data/name.php?xml=5-2"), {}, function(xml){ - jQuery("math", xml).each(function() { - equal( jQuery("calculation", this).text(), "5-2", "Check for XML" ); - equal( jQuery("result", this).text(), "3", "Check for XML" ); - }); - if ( ++done === 2 ) { - start(); - } - }); -}); + test( "jQuery.ajaxSetup({timeout: Number}) - with global timeout", function() { + var passed = 0; -test("jQuery.ajaxSetup({timeout: Number}) - with global timeout", function() { - expect( 1 ); + expect( 1 ); - stop(); + stop(); - var passed = 0; + jQuery.ajaxSetup({ + timeout: 1000 + }); - jQuery.ajaxSetup({timeout: 1000}); + var pass = function() { + passed++; + if ( passed == 2 ) { + ok( true, "Check local and global callbacks after timeout" ); + jQuery("#qunit-fixture").unbind("ajaxError"); + start(); + } + }; - var pass = function() { - passed++; - if ( passed == 2 ) { - ok( true, "Check local and global callbacks after timeout" ); - jQuery("#qunit-fixture").unbind("ajaxError"); + var fail = function( a, b, c ) { + ok( false, "Check for timeout failed " + a + " " + b ); start(); - } - }; - - var fail = function(a,b,c) { - ok( false, "Check for timeout failed " + a + " " + b ); - start(); - }; - - jQuery("#qunit-fixture").ajaxError(pass); - - jQuery.ajax({ - type: "GET", - url: url("data/name.php?wait=5"), - error: pass, - success: fail - }); - - // reset timeout - jQuery.ajaxSetup({timeout: 0}); -}); + }; -test("jQuery.ajaxSetup({timeout: Number}) with localtimeout", function() { - expect( 1 ); + jQuery("#qunit-fixture").ajaxError( pass ); - stop(); - jQuery.ajaxSetup({timeout: 50}); + jQuery.ajax({ + type: "GET", + url: url("data/name.php?wait=5"), + error: pass, + success: fail + }); - jQuery.ajax({ - type: "GET", - timeout: 15000, - url: url("data/name.php?wait=1"), - error: function() { - ok( false, "Check for local timeout failed" ); - start(); - }, - success: function() { - ok( true, "Check for local timeout" ); - start(); - } + // reset timeout + jQuery.ajaxSetup({ + timeout: 0 + }); }); - // reset timeout - jQuery.ajaxSetup({timeout: 0}); -}); + test( "jQuery.ajaxSetup({timeout: Number}) with localtimeout", function() { + expect( 1 ); + stop(); -test("jQuery.ajax - simple get", function() { - expect(1); - stop(); - jQuery.ajax({ - type: "GET", - url: url("data/name.php?name=foo"), - success: function(msg){ - equal( msg, "bar", "Check for GET" ); - start(); - } - }); -}); + jQuery.ajaxSetup({ + timeout: 50 + }); -test("jQuery.ajax - simple post", function() { - expect(1); - stop(); - jQuery.ajax({ - type: "POST", - url: url("data/name.php"), - data: "name=peter", - success: function(msg){ - equal( msg, "pan", "Check for POST" ); - start(); - } - }); -}); + jQuery.ajax({ + type: "GET", + timeout: 15000, + url: url("data/name.php?wait=1"), + error: function() { + ok( false, "Check for local timeout failed" ); + start(); + }, + success: function() { + ok( true, "Check for local timeout" ); + start(); + } + }); -test("ajaxSetup()", function() { - expect(1); - stop(); - jQuery.ajaxSetup({ - url: url("data/name.php?name=foo"), - success: function(msg){ - equal( msg, "bar", "Check for GET" ); - start(); - } + // reset timeout + jQuery.ajaxSetup({ + timeout: 0 + }); }); - jQuery.ajax(); -}); -/* -test("custom timeout does not set error message when timeout occurs, see #970", function() { - stop(); - jQuery.ajax({ - url: "data/name.php?wait=1", - timeout: 500, - error: function(request, status) { - ok( status != null, "status shouldn't be null in error handler" ); - equal( "timeout", status ); - start(); - } + test( "jQuery.ajax - simple get", function() { + expect( 1 ); + stop(); + jQuery.ajax({ + type: "GET", + url: url("data/name.php?name=foo"), + success: function( msg ) { + equal( msg, "bar", "Check for GET" ); + start(); + } + }); }); -}); -*/ -test("data option: evaluate function values (#2806)", function() { - expect( 1 ); - - stop(); - jQuery.ajax({ - url: "data/echoQuery.php", - data: { - key: function() { - return "value"; + test( "jQuery.ajax - simple post", function() { + expect( 1 ); + stop(); + jQuery.ajax({ + type: "POST", + url: url("data/name.php"), + data: "name=peter", + success: function( msg ) { + equal( msg, "pan", "Check for POST" ); + start(); } - }, - success: function(result) { - equal( result, "key=value" ); - start(); - } + }); }); -}); -test("data option: empty bodies for non-GET requests", function() { - expect( 1 ); + test( "ajaxSetup()", function() { + expect( 1 ); + stop(); + jQuery.ajaxSetup({ + url: url("data/name.php?name=foo"), + success: function( msg ) { + equal( msg, "bar", "Check for GET" ); + start(); + } + }); + jQuery.ajax(); + }); - stop(); - jQuery.ajax({ - url: "data/echoData.php", - data: undefined, - type: "post", - success: function(result) { - equal( result, "" ); - start(); - } + test( "data option: evaluate function values (#2806)", function() { + expect( 1 ); + stop(); + jQuery.ajax({ + url: "data/echoQuery.php", + data: { + key: function() { + return "value"; + } + }, + success: function( result ) { + equal( result, "key=value" ); + start(); + } + }); }); -}); -var ifModifiedNow = new Date(); + test( "data option: empty bodies for non-GET requests", function() { + expect( 1 ); + stop(); + jQuery.ajax({ + url: "data/echoData.php", + data: undefined, + type: "post", + success: function( result ) { + equal( result, "" ); + start(); + } + }); + }); -jQuery.each( { " (cache)": true, " (no cache)": false }, function( label, cache ) { + var ifModifiedNow = new Date(); - test("jQuery.ajax - If-Modified-Since support" + label, function() { - expect( 3 ); + jQuery.each( + /* jQuery.each arguments start */ + { + " (cache)": true, + " (no cache)": false + }, + function( label, cache ) { - stop(); + test( "jQuery.ajax - If-Modified-Since support" + label, function() { + expect( 3 ); - var url = "data/if_modified_since.php?ts=" + ifModifiedNow++; + stop(); - jQuery.ajax({ - url: url, - ifModified: true, - cache: cache, - success: function(data, status) { - equal(status, "success" ); + var url = "data/if_modified_since.php?ts=" + ifModifiedNow++; jQuery.ajax({ url: url, ifModified: true, cache: cache, - success: function(data, status) { - if ( data === "FAIL" ) { - ok(isOpera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')."); - ok(isOpera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')."); - } else { - equal(status, "notmodified"); - ok(data == null, "response body should be empty"); - } - start(); + success: function( data, status ) { + equal( status, "success" ); + + jQuery.ajax({ + url: url, + ifModified: true, + cache: cache, + success: function( data, status ) { + if ( data === "FAIL" ) { + ok( isOpera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ); + ok( isOpera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ); + } else { + equal( status, "notmodified" ); + ok( data == null, "response body should be empty" ); + } + start(); + }, + error: function() { + // Do this because opera simply refuses to implement 304 handling :( + // A feature-driven way of detecting this would be appreciated + // See: http://gist.github.com/599419 + ok( isOpera, "error" ); + ok( isOpera, "error" ); + start(); + } + }); }, error: function() { + equal( false, "error" ); // Do this because opera simply refuses to implement 304 handling :( // A feature-driven way of detecting this would be appreciated // See: http://gist.github.com/599419 - ok(isOpera, "error"); - ok(isOpera, "error"); + ok( isOpera, "error" ); start(); } }); - }, - error: function() { - equal(false, "error"); - // Do this because opera simply refuses to implement 304 handling :( - // A feature-driven way of detecting this would be appreciated - // See: http://gist.github.com/599419 - ok(isOpera, "error"); - start(); - } - }); - }); - - test("jQuery.ajax - Etag support" + label, function() { - expect( 3 ); + }); - stop(); + test( "jQuery.ajax - Etag support" + label, function() { + expect( 3 ); - var url = "data/etag.php?ts=" + ifModifiedNow++; + stop(); - jQuery.ajax({ - url: url, - ifModified: true, - cache: cache, - success: function(data, status) { - equal(status, "success" ); + var url = "data/etag.php?ts=" + ifModifiedNow++; jQuery.ajax({ url: url, ifModified: true, cache: cache, - success: function(data, status) { - if ( data === "FAIL" ) { - ok(isOpera, "Opera is incapable of doing .setRequestHeader('If-None-Match')."); - ok(isOpera, "Opera is incapable of doing .setRequestHeader('If-None-Match')."); - } else { - equal(status, "notmodified"); - ok(data == null, "response body should be empty"); - } - start(); + success: function( data, status ) { + equal( status, "success" ); + + jQuery.ajax({ + url: url, + ifModified: true, + cache: cache, + success: function( data, status ) { + if ( data === "FAIL" ) { + ok( isOpera, "Opera is incapable of doing .setRequestHeader('If-None-Match')." ); + ok( isOpera, "Opera is incapable of doing .setRequestHeader('If-None-Match')." ); + } else { + equal( status, "notmodified" ); + ok( data == null, "response body should be empty" ); + } + start(); + }, + error: function() { + // Do this because opera simply refuses to implement 304 handling :( + // A feature-driven way of detecting this would be appreciated + // See: http://gist.github.com/599419 + ok( isOpera, "error" ); + ok( isOpera, "error" ); + start(); + } + }); }, error: function() { // Do this because opera simply refuses to implement 304 handling :( // A feature-driven way of detecting this would be appreciated // See: http://gist.github.com/599419 - ok(isOpera, "error"); - ok(isOpera, "error"); + ok( isOpera, "error" ); start(); } }); - }, - error: function() { - // Do this because opera simply refuses to implement 304 handling :( - // A feature-driven way of detecting this would be appreciated - // See: http://gist.github.com/599419 - ok(isOpera, "error"); - start(); - } - }); - }); -}); + }); + } + /* jQuery.each arguments end */ + ); -test("jQuery ajax - failing cross-domain", function() { + test( "jQuery ajax - failing cross-domain", function() { - expect( 2 ); + expect( 2 ); - stop(); + stop(); - var i = 2; + var i = 2; - jQuery.ajax({ - url: "http://somewebsitethatdoesnotexist-67864863574657654.com", - success: function(){ ok( false , "success" ); }, - error: function(xhr,_,e){ ok( true , "file not found: " + xhr.status + " => " + e ); }, - complete: function() { - if ( ! --i ) { - start(); + jQuery.ajax({ + url: "http://somewebsitethatdoesnotexist-67864863574657654.com", + success: function() { + ok( false, "success" ); + }, + error: function( xhr, _, e ) { + ok( true, "file not found: " + xhr.status + " => " + e ); + }, + complete: function() { + if ( ! --i ) { + start(); + } } - } - }); + }); - jQuery.ajax({ - url: "http://www.google.com", - success: function(){ ok( false , "success" ); }, - error: function(xhr,_,e){ ok( true , "access denied: " + xhr.status + " => " + e ); }, - complete: function() { - if ( ! --i ) { - start(); + jQuery.ajax({ + url: "http://www.google.com", + success: function() { + ok( false, "success" ); + }, + error: function( xhr, _, e ) { + ok( true, "access denied: " + xhr.status + " => " + e ); + }, + complete: function() { + if ( ! --i ) { + start(); + } } - } - }); + }); -}); + }); -test("jQuery ajax - atom+xml", function() { - expect( 1 ); + test( "jQuery ajax - atom+xml", function() { + expect( 1 ); + stop(); - stop(); + jQuery.ajax({ + url: url("data/atom+xml.php"), + success: function() { + ok( true, "success" ); + }, + error: function() { + ok( false, "error" ); + }, + complete: function() { + start(); + } + }); - jQuery.ajax({ - url: url( "data/atom+xml.php" ), - success: function(){ ok( true , "success" ); }, - error: function(){ ok( false , "error" ); }, - complete: function() { start(); } }); -}); + test( "jQuery.ajax - Location object as url (#7531)", 1, function () { + var success = false; + try { + var xhr = jQuery.ajax({ + url: window.location + }); + success = true; + xhr.abort(); + } catch (e) { -test( "jQuery.ajax - Location object as url (#7531)", 1, function () { - var success = false; - try { - var xhr = jQuery.ajax({ url: window.location }); - success = true; - xhr.abort(); - } catch (e) {} + } - ok( success, "document.location did not generate exception" ); -}); + ok( success, "document.location did not generate exception" ); + }); -test( "jQuery.ajax - Context with circular references (#9887)", 2, function () { - var success = false, - context = {}; - context.field = context; - try { - jQuery.ajax( "non-existing", { - context: context, - beforeSend: function() { - ok( this === context, "context was not deep extended" ); - return false; - } - }); - success = true; - } catch (e) { console.log( e ); } - ok( success, "context with circular reference did not generate an exception" ); -}); + test( "jQuery.ajax - Context with circular references (#9887)", 2, function () { + var success = false, + context = {}; + context.field = context; + try { + jQuery.ajax( "non-existing", { + context: context, + beforeSend: function() { + ok( this === context, "context was not deep extended" ); + return false; + } + }); + success = true; + } catch ( e ) { + console.log( e ); + } + ok( success, "context with circular reference did not generate an exception" ); + }); -test( "jQuery.ajax - statusText" , 3, function() { - stop(); - jQuery.ajax( url( "data/statusText.php?status=200&text=Hello" ) ).done(function( _, statusText, jqXHR ) { - strictEqual( statusText, "success", "callback status text ok for success" ); - ok( jqXHR.statusText === "Hello" || jqXHR.statusText === "OK", "jqXHR status text ok for success (" + jqXHR.statusText + ")" ); - jQuery.ajax( url( "data/statusText.php?status=404&text=World" ) ).fail(function( jqXHR, statusText ) { - strictEqual( statusText, "error", "callback status text ok for error" ); - // ok( jqXHR.statusText === "World" || jQuery.browser.safari && jqXHR.statusText === "Not Found", "jqXHR status text ok for error (" + jqXHR.statusText + ")" ); - start(); + test( "jQuery.ajax - statusText", 3, function() { + stop(); + jQuery.ajax( url("data/statusText.php?status=200&text=Hello") ).done(function( _, statusText, jqXHR ) { + strictEqual( statusText, "success", "callback status text ok for success" ); + ok( jqXHR.statusText === "Hello" || jqXHR.statusText === "OK", "jqXHR status text ok for success (" + jqXHR.statusText + ")" ); + jQuery.ajax( url("data/statusText.php?status=404&text=World") ).fail(function( jqXHR, statusText ) { + strictEqual( statusText, "error", "callback status text ok for error" ); + // ok( jqXHR.statusText === "World" || jQuery.browser.safari && jqXHR.statusText === "Not Found", "jqXHR status text ok for error (" + jqXHR.statusText + ")" ); + start(); + }); }); }); -}); - -test( "jQuery.ajax - statusCode" , function() { - var count = 12; + test( "jQuery.ajax - statusCode", function() { - expect( 20 ); - stop(); + var count = 12; - function countComplete() { - if ( ! --count ) { - start(); - } - } + expect( 20 ); + stop(); - function createStatusCodes( name , isSuccess ) { - name = "Test " + name + " " + ( isSuccess ? "success" : "error" ); - return { - 200: function() { - ok( isSuccess , name ); - }, - 404: function() { - ok( ! isSuccess , name ); + function countComplete() { + if ( ! --count ) { + start(); } - }; - } + } - jQuery.each( { - "data/name.html": true, - "data/someFileThatDoesNotExist.html": false - } , function( uri , isSuccess ) { + function createStatusCodes( name, isSuccess ) { + name = "Test " + name + " " + ( isSuccess ? "success" : "error" ); + return { + 200: function() { + ok( isSuccess, name ); + }, + 404: function() { + ok( ! isSuccess, name ); + } + }; + } - jQuery.ajax( url( uri ) , { - statusCode: createStatusCodes( "in options" , isSuccess ), - complete: countComplete - }); + jQuery.each( + /* jQuery.each arguments start */ + { + "data/name.html": true, + "data/someFileThatDoesNotExist.html": false + }, + function( uri, isSuccess ) { - jQuery.ajax( url( uri ) , { - complete: countComplete - }).statusCode( createStatusCodes( "immediately with method" , isSuccess ) ); + jQuery.ajax( url(uri), { + statusCode: createStatusCodes( "in options", isSuccess ), + complete: countComplete + }); - jQuery.ajax( url( uri ) , { - complete: function(jqXHR) { - jqXHR.statusCode( createStatusCodes( "on complete" , isSuccess ) ); - countComplete(); - } - }); + jQuery.ajax( url(uri), { + complete: countComplete + }).statusCode( createStatusCodes("immediately with method", isSuccess) ); - jQuery.ajax( url( uri ) , { - complete: function(jqXHR) { - setTimeout(function() { - jqXHR.statusCode( createStatusCodes( "very late binding" , isSuccess ) ); - countComplete(); - } , 100 ); - } - }); + jQuery.ajax( url(uri), { + complete: function( jqXHR ) { + jqXHR.statusCode( createStatusCodes("on complete", isSuccess) ); + countComplete(); + } + }); - jQuery.ajax( url( uri ) , { - statusCode: createStatusCodes( "all (options)" , isSuccess ), - complete: function(jqXHR) { - jqXHR.statusCode( createStatusCodes( "all (on complete)" , isSuccess ) ); - setTimeout(function() { - jqXHR.statusCode( createStatusCodes( "all (very late binding)" , isSuccess ) ); - countComplete(); - } , 100 ); - } - }).statusCode( createStatusCodes( "all (immediately with method)" , isSuccess ) ); + jQuery.ajax( url(uri), { + complete: function( jqXHR ) { + setTimeout(function() { + jqXHR.statusCode( createStatusCodes("very late binding", isSuccess) ); + countComplete(); + }, 100 ); + } + }); - var testString = ""; + jQuery.ajax( url(uri), { + statusCode: createStatusCodes( "all (options)", isSuccess ), + complete: function( jqXHR ) { + jqXHR.statusCode( createStatusCodes("all (on complete)", isSuccess) ); + setTimeout(function() { + jqXHR.statusCode( createStatusCodes("all (very late binding)", isSuccess) ); + countComplete(); + }, 100 ); + } + }).statusCode( createStatusCodes("all (immediately with method)", isSuccess) ); + + var testString = ""; + + jQuery.ajax( url(uri), { + success: function( a, b, jqXHR ) { + ok( isSuccess, "success" ); + var statusCode = {}; + statusCode[ jqXHR.status ] = function() { + testString += "B"; + }; + jqXHR.statusCode( statusCode ); + testString += "A"; + }, + error: function( jqXHR ) { + ok( !isSuccess, "error" ); + var statusCode = {}; + statusCode[ jqXHR.status ] = function() { + testString += "B"; + }; + jqXHR.statusCode( statusCode ); + testString += "A"; + }, + complete: function() { + strictEqual( + testString, + "AB", + "Test statusCode callbacks are ordered like " + ( isSuccess ? "success" : "error" ) + " callbacks" + ); + countComplete(); + } + }); - jQuery.ajax( url( uri ), { - success: function( a , b , jqXHR ) { - ok( isSuccess , "success" ); - var statusCode = {}; - statusCode[ jqXHR.status ] = function() { - testString += "B"; - }; - jqXHR.statusCode( statusCode ); - testString += "A"; - }, - error: function( jqXHR ) { - ok( ! isSuccess , "error" ); - var statusCode = {}; - statusCode[ jqXHR.status ] = function() { - testString += "B"; - }; - jqXHR.statusCode( statusCode ); - testString += "A"; - }, - complete: function() { - strictEqual( testString , "AB" , "Test statusCode callbacks are ordered like " + - ( isSuccess ? "success" : "error" ) + " callbacks" ); - countComplete(); } - } ); - + /* jQuery.each arguments end*/ + ); }); -}); -test("jQuery.ajax - transitive conversions", function() { + test( "jQuery.ajax - transitive conversions", function() { - expect( 8 ); + expect( 8 ); - stop(); - - jQuery.when( + stop(); - jQuery.ajax( url("data/json.php") , { - converters: { - "json myJson": function( data ) { - ok( true , "converter called" ); - return data; + jQuery.when( + /* jQuery.when arguments start */ + jQuery.ajax( url("data/json.php"), { + converters: { + "json myJson": function( data ) { + ok( true, "converter called" ); + return data; + } + }, + dataType: "myJson", + success: function() { + ok( true, "Transitive conversion worked" ); + strictEqual( this.dataTypes[ 0 ], "text", "response was retrieved as text" ); + strictEqual( this.dataTypes[ 1 ], "myjson", "request expected myjson dataType" ); } - }, - dataType: "myJson", - success: function() { - ok( true , "Transitive conversion worked" ); - strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text" ); - strictEqual( this.dataTypes[1] , "myjson" , "request expected myjson dataType" ); - } - }), + }), - jQuery.ajax( url("data/json.php") , { - converters: { - "json myJson": function( data ) { - ok( true , "converter called (*)" ); - return data; + jQuery.ajax( url("data/json.php"), { + converters: { + "json myJson": function( data ) { + ok( true, "converter called (*)" ); + return data; + } + }, + contents: false, /* headers are wrong so we ignore them */ + dataType: "* myJson", + success: function() { + ok( true, "Transitive conversion worked (*)" ); + strictEqual( this.dataTypes[ 0 ], "text", "response was retrieved as text (*)" ); + strictEqual( this.dataTypes[ 1 ], "myjson", "request expected myjson dataType (*)" ); } - }, - contents: false, /* headers are wrong so we ignore them */ - dataType: "* myJson", - success: function() { - ok( true , "Transitive conversion worked (*)" ); - strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text (*)" ); - strictEqual( this.dataTypes[1] , "myjson" , "request expected myjson dataType (*)" ); - } - }) + }) + /* jQuery.when arguments end */ + ).always(function() { + start(); + }); - ).always(function() { - start(); }); -}); - -test("jQuery.ajax - overrideMimeType", function() { + test( "jQuery.ajax - overrideMimeType", function() { - expect( 2 ); + expect( 2 ); - stop(); - - jQuery.when( - - jQuery.ajax( url("data/json.php") , { - beforeSend: function( xhr ) { - xhr.overrideMimeType( "application/json" ); - }, - success: function( json ) { - ok( json.data , "Mimetype overriden using beforeSend" ); - } - }), + stop(); - jQuery.ajax( url("data/json.php") , { - mimeType: "application/json", - success: function( json ) { - ok( json.data , "Mimetype overriden using mimeType option" ); - } - }) + jQuery.when( + /* jQuery.when arguments start */ + jQuery.ajax( url("data/json.php"), { + beforeSend: function( xhr ) { + xhr.overrideMimeType( "application/json" ); + }, + success: function( json ) { + ok( json.data, "Mimetype overriden using beforeSend" ); + } + }), + jQuery.ajax( url("data/json.php"), { + mimeType: "application/json", + success: function( json ) { + ok( json.data, "Mimetype overriden using mimeType option" ); + } + }) + /* jQuery.when arguments end */ + ).always(function() { + start(); + }); - ).always(function() { - start(); }); -}); + test( "jQuery.ajax - abort in prefilter", function() { -test("jQuery.ajax - abort in prefilter", function() { + expect( 1 ); - expect( 1 ); + jQuery.ajaxPrefilter(function( options, _, jqXHR ) { + if ( options.abortInPrefilter ) { + jqXHR.abort(); + } + }); - jQuery.ajaxPrefilter(function( options, _, jqXHR ) { - if ( options.abortInPrefilter ) { - jqXHR.abort(); - } - }); + jQuery.ajax({ + abortInPrefilter: true, + error: function() { + ok( false, "error callback called" ); + } + }).fail(function( _, reason ) { + strictEqual( reason, 'canceled', "Request aborted by the prefilter must fail with 'canceled' status text" ); + }); - jQuery.ajax({ - abortInPrefilter: true, - error: function() { - ok( false, "error callback called" ); - } - }).fail(function( _, reason ) { - strictEqual( reason, 'canceled', "Request aborted by the prefilter must fail with 'canceled' status text" ); }); -}); - -test( "jQuery.ajax - loading binary data shouldn't throw an exception in IE (#11426)", 1, function() { - stop(); - jQuery.ajax( url( "data/1x1.jpg" ), { - success: function( data ) { - ok( data === undefined || /JFIF/.test( data ) , "success callback reached" ); - start(); - }, - error: function( _, __, error ) { - ok( false, "exception thrown: '" + error + "'" ); - start(); - } + test( "jQuery.ajax - loading binary data shouldn't throw an exception in IE (#11426)", 1, function() { + stop(); + jQuery.ajax( url("data/1x1.jpg"), { + success: function( data ) { + ok( data === undefined || /JFIF/.test( data ), "success callback reached" ); + start(); + }, + error: function( _, __, error ) { + ok( false, "exception thrown: '" + error + "'" ); + start(); + } + }); }); -}); -test( "jQuery.domManip - no side effect because of ajaxSetup or global events (#11264)", function() { - expect( 1 ); + test( "jQuery.domManip - no side effect because of ajaxSetup or global events (#11264)", function() { + expect( 1 ); - jQuery.ajaxSetup({ - type: "POST" - }); + jQuery.ajaxSetup({ + type: "POST" + }); - jQuery( document ).bind( "ajaxStart ajaxStop", function() { - ok( false, "Global event triggered" ); - }); + jQuery( document ).bind( "ajaxStart ajaxStop", function() { + ok( false, "Global event triggered" ); + }); - jQuery( "#qunit-fixture" ).append( "" ); + jQuery("#qunit-fixture").append(""); - jQuery( document ).unbind( "ajaxStart ajaxStop" ); + jQuery( document ).unbind("ajaxStart ajaxStop"); - jQuery.ajaxSetup({ - type: "GET" + jQuery.ajaxSetup({ + type: "GET" + }); }); -}); -test( "jQuery.domManip - script in comments are properly evaluated (#11402)", function() { - expect( 2 ); - stop(); - jQuery( "#qunit-fixture" ).load( "data/cleanScript.html", function() { - start(); + test( "jQuery.domManip - script in comments are properly evaluated (#11402)", function() { + expect( 2 ); + stop(); + jQuery("#qunit-fixture").load( "data/cleanScript.html", function() { + start(); + }); }); -}); - -test("jQuery.ajax - active counter", function() { - expect( 1 ); - - ok( jQuery.active === 0, "ajax active counter should be zero: " + jQuery.active ); -}); + test( "jQuery.ajax - active counter", function() { + expect( 1 ); + ok( jQuery.active === 0, "ajax active counter should be zero: " + jQuery.active ); + }); } -- 2.39.5