2011-01-09 21:58:47 +00:00
module ( "ajax" , { teardown : moduleTeardown } ) ;
2006-11-18 13:37:01 +00:00
2012-06-11 11:59:34 +00:00
if ( jQuery . ajax && ( ! isLocal || hasPHP ) ) {
2007-09-23 15:58:49 +00:00
2012-06-25 14:02:28 +00:00
var isOpera = ! ! window . opera ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax() - success callbacks" , function ( ) {
2007-09-03 23:45:14 +00:00
expect ( 8 ) ;
2009-05-01 00:59:27 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2009-05-01 00:59:27 +00:00
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-03-02 02:24:49 +00:00
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" ) ;
} ) ;
2009-05-01 00:59:27 +00:00
2010-03-02 02:24:49 +00:00
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" ) ; }
} ) ;
2007-09-03 23:45:14 +00:00
} ) ;
2010-12-09 18:34:28 +00:00
test ( "jQuery.ajax() - success callbacks - (url, options) syntax" , function ( ) {
expect ( 8 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
setTimeout ( function ( ) {
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-12-09 18:34:28 +00:00
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 ( "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 ( ) ;
setTimeout ( function ( ) {
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-12-09 18:34:28 +00:00
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" ) ; }
} )
. complete ( function ( ) { ok ( true , "complete" ) ; } )
. success ( function ( ) { ok ( true , "success" ) ; } )
. error ( function ( ) { ok ( false , "error" ) ; } ) ;
} , 13 ) ;
} ) ;
test ( "jQuery.ajax() - success callbacks (oncomplete binding)" , function ( ) {
expect ( 8 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
setTimeout ( function ( ) {
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-12-09 18:34:28 +00:00
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 . 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 ( ) ; } ) ;
}
2011-01-07 14:52:58 +00:00
} ) ;
2010-12-09 18:34:28 +00:00
} , 13 ) ;
} ) ;
test ( "jQuery.ajax() - success callbacks (very late binding)" , function ( ) {
expect ( 8 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
setTimeout ( function ( ) {
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-12-09 18:34:28 +00:00
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 . 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 ) ;
}
2011-01-07 14:52:58 +00:00
} ) ;
2010-12-09 18:34:28 +00:00
} , 13 ) ;
} ) ;
test ( "jQuery.ajax() - success callbacks (order)" , function ( ) {
expect ( 1 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
var testString = "" ;
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 ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax() - error callbacks" , function ( ) {
2009-05-01 00:59:27 +00:00
expect ( 8 ) ;
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2009-05-01 00:59:27 +00:00
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" ) ; }
} ) ;
2007-09-23 15:58:49 +00:00
} ) ;
2007-09-03 23:45:14 +00:00
2011-02-01 08:30:52 +00:00
test ( "jQuery.ajax - multiple method signatures introduced in 1.5 ( #8107)" , function ( ) {
expect ( 4 ) ;
stop ( ) ;
jQuery . when (
2011-04-11 20:33:29 +00:00
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" ) ; } )
2011-10-02 13:50:09 +00:00
) . always ( function ( ) {
2011-10-01 20:49:49 +00:00
start ( ) ;
} ) ;
2011-02-01 08:30:52 +00:00
} ) ;
2011-01-25 15:08:19 +00:00
test ( "jQuery.ajax() - textStatus and errorThrown values" , function ( ) {
2011-01-31 10:14:38 +00:00
var nb = 2 ;
2011-01-25 15:08:19 +00:00
expect ( 2 * nb ) ;
stop ( ) ;
function startN ( ) {
if ( ! ( -- nb ) ) {
start ( ) ;
}
}
2011-01-31 10:14:38 +00:00
/ *
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
2011-01-25 15:08:19 +00:00
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 ( ) ;
}
} ) ;
2011-01-31 10:14:38 +00:00
* /
2011-01-25 15:08:19 +00:00
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" ) ;
} ) ;
2011-01-09 03:53:29 +00:00
test ( "jQuery.ajax() - responseText on error" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/errorWithText.php" ) ,
error : function ( xhr ) {
2011-02-01 15:00:30 +00:00
strictEqual ( xhr . responseText , "plain text message" , "Test jqXHR.responseText is filled for HTTP errors" ) ;
2011-01-09 03:53:29 +00:00
} ,
complete : function ( ) {
start ( ) ;
}
} ) ;
} ) ;
2011-01-09 05:19:27 +00:00
test ( ".ajax() - retry with jQuery.ajax( this )" , function ( ) {
2011-07-01 00:11:26 +00:00
expect ( 2 ) ;
2011-01-09 05:19:27 +00:00
stop ( ) ;
2011-07-01 00:11:26 +00:00
var firstTime = true ,
previousUrl ;
2011-01-09 05:19:27 +00:00
jQuery . ajax ( {
url : url ( "data/errorWithText.php" ) ,
error : function ( ) {
if ( firstTime ) {
2011-07-01 00:11:26 +00:00
firstTime = false ;
2011-01-09 05:19:27 +00:00
jQuery . ajax ( this ) ;
} else {
ok ( true , "Test retrying with jQuery.ajax(this) works" ) ;
2011-07-01 00:11:26 +00:00
jQuery . ajax ( {
url : url ( "data/errorWithText.php" ) ,
2012-07-05 19:52:13 +00:00
data : { "x" : 1 } ,
2011-07-01 00:11:26 +00:00
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 ) ;
}
} ) ;
2011-01-09 05:19:27 +00:00
}
}
2011-01-11 22:43:02 +00:00
} ) ;
2011-01-09 05:19:27 +00:00
} ) ;
2010-12-09 18:34:28 +00:00
test ( ".ajax() - headers" , function ( ) {
2011-02-17 16:03:09 +00:00
expect ( 4 ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
stop ( ) ;
2010-12-30 06:34:48 +00:00
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxSend ( function ( evt , xhr ) {
2011-02-07 15:35:32 +00:00
xhr . setRequestHeader ( "ajax-send" , "test" ) ;
} ) ;
2010-12-10 01:45:08 +00:00
var requestHeaders = {
2012-07-05 19:52:13 +00:00
"siMPle" : "value" ,
2011-02-07 15:35:32 +00:00
"SometHing-elsE" : "other value" ,
2012-07-05 19:52:13 +00:00
"OthEr" : "something else"
2010-12-10 01:45:08 +00:00
} ,
list = [ ] ,
2010-12-11 01:41:39 +00:00
i ;
2010-12-30 06:34:48 +00:00
2010-12-10 01:45:08 +00:00
for ( i in requestHeaders ) {
2010-12-11 01:21:54 +00:00
list . push ( i ) ;
2010-12-10 01:45:08 +00:00
}
2011-02-07 15:35:32 +00:00
list . push ( "ajax-send" ) ;
2010-12-30 06:34:48 +00:00
2010-12-11 01:41:39 +00:00
jQuery . ajax ( url ( "data/headers.php?keys=" + list . join ( "_" ) ) , {
2011-02-07 15:35:32 +00:00
2010-12-10 01:45:08 +00:00
headers : requestHeaders ,
2010-12-11 01:41:39 +00:00
success : function ( data , _ , xhr ) {
2012-06-25 14:02:28 +00:00
var i , emptyHeader ,
tmp = [ ] ;
2010-12-10 01:45:08 +00:00
for ( i in requestHeaders ) {
2010-12-11 01:21:54 +00:00
tmp . push ( i , ": " , requestHeaders [ i ] , "\n" ) ;
2010-12-10 01:45:08 +00:00
}
2011-02-07 15:35:32 +00:00
tmp . push ( "ajax-send: test\n" ) ;
2010-12-10 01:45:08 +00:00
tmp = tmp . join ( "" ) ;
2010-12-30 06:34:48 +00:00
2011-02-17 16:03:09 +00:00
strictEqual ( data , tmp , "Headers were sent" ) ;
strictEqual ( xhr . getResponseHeader ( "Sample-Header" ) , "Hello World" , "Sample header received" ) ;
2012-06-25 14:02:28 +00:00
emptyHeader = xhr . getResponseHeader ( "Empty-Header" ) ;
if ( emptyHeader === null ) {
2011-02-17 16:03:09 +00:00
ok ( true , "Firefox doesn't support empty headers" ) ;
} else {
2012-06-25 14:02:28 +00:00
strictEqual ( emptyHeader , "" , "Empty header received" ) ;
2011-02-17 16:03:09 +00:00
}
strictEqual ( xhr . getResponseHeader ( "Sample-Header2" ) , "Hello World 2" , "Second sample header received" ) ;
2010-12-09 18:34:28 +00:00
} ,
error : function ( ) { ok ( false , "error" ) ; }
2011-02-07 15:35:32 +00:00
2011-10-01 20:49:49 +00:00
} ) . always ( function ( ) {
start ( ) ;
} ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
} ) ;
2011-01-11 22:01:18 +00:00
test ( ".ajax() - Accept header" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
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" ) ; }
} ) ;
} ) ;
2011-01-09 03:28:42 +00:00
test ( ".ajax() - contentType" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
var count = 2 ;
function restart ( ) {
if ( ! -- count ) {
start ( ) ;
}
}
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 ( 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 ( ) ;
}
} ) ;
} ) ;
2011-01-26 00:36:05 +00:00
test ( ".ajax() - protocol-less urls" , function ( ) {
expect ( 1 ) ;
jQuery . ajax ( {
url : "//somedomain.com" ,
beforeSend : function ( xhr , settings ) {
2011-11-06 20:27:42 +00:00
equal ( settings . url , location . protocol + "//somedomain.com" , "Make sure that the protocol is added." ) ;
2011-01-26 00:36:05 +00:00
return false ;
}
} ) ;
} ) ;
2010-09-22 16:52:44 +00:00
test ( ".ajax() - hash" , function ( ) {
expect ( 3 ) ;
2010-12-30 06:34:48 +00:00
2010-09-22 16:52:44 +00:00
jQuery . ajax ( {
url : "data/name.html#foo" ,
beforeSend : function ( xhr , settings ) {
2011-11-06 20:27:42 +00:00
equal ( settings . url , "data/name.html" , "Make sure that the URL is trimmed." ) ;
2010-09-22 16:52:44 +00:00
return false ;
}
} ) ;
2010-12-30 06:34:48 +00:00
2010-09-22 16:52:44 +00:00
jQuery . ajax ( {
url : "data/name.html?abc#foo" ,
beforeSend : function ( xhr , settings ) {
2011-11-06 20:27:42 +00:00
equal ( settings . url , "data/name.html?abc" , "Make sure that the URL is trimmed." ) ;
2010-09-22 16:52:44 +00:00
return false ;
}
} ) ;
2010-12-30 06:34:48 +00:00
2010-09-22 16:52:44 +00:00
jQuery . ajax ( {
url : "data/name.html?abc#foo" ,
data : { "test" : 123 } ,
beforeSend : function ( xhr , settings ) {
2011-11-06 20:27:42 +00:00
equal ( settings . url , "data/name.html?abc&test=123" , "Make sure that the URL is trimmed." ) ;
2010-09-22 16:52:44 +00:00
return false ;
}
} ) ;
} ) ;
2011-01-09 05:01:00 +00:00
test ( "jQuery ajax - cross-domain detection" , function ( ) {
2011-03-15 18:20:03 +00:00
expect ( 6 ) ;
2011-01-09 05:01:00 +00:00
var loc = document . location ,
otherPort = loc . port === 666 ? 667 : 666 ,
2011-01-09 16:27:29 +00:00
otherProtocol = loc . protocol === "http:" ? "https:" : "http:" ;
2011-01-09 05:01:00 +00:00
2011-01-09 16:27:29 +00:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 05:01:00 +00:00
url : otherProtocol + "//" + loc . host ,
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test different protocols are detected as cross-domain" ) ;
return false ;
}
2011-01-09 16:27:29 +00:00
} ) ;
2011-01-09 05:01:00 +00:00
2011-02-24 19:21:05 +00:00
jQuery . ajax ( {
2011-03-15 18:20:03 +00:00
dataType : "jsonp" ,
2011-04-11 20:33:29 +00:00
url : "app:/path" ,
2011-02-24 19:21:05 +00:00
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Adobe AIR app:/ URL detected as cross-domain" ) ;
return false ;
}
} ) ;
2011-01-09 16:27:29 +00:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-04-11 20:33:29 +00:00
url : loc . protocol + "//somewebsitethatdoesnotexist-656329477541.com:" + ( loc . port || 80 ) ,
2011-01-09 05:01:00 +00:00
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test different hostnames are detected as cross-domain" ) ;
return false ;
}
2011-01-09 16:27:29 +00:00
} ) ;
2011-01-09 05:01:00 +00:00
2011-01-09 16:27:29 +00:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 05:01:00 +00:00
url : loc . protocol + "//" + loc . hostname + ":" + otherPort ,
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test different ports are detected as cross-domain" ) ;
return false ;
}
2011-01-09 16:27:29 +00:00
} ) ;
2011-01-09 05:01:00 +00:00
2011-03-15 18:20:03 +00:00
jQuery . ajax ( {
dataType : "jsonp" ,
url : "about:blank" ,
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test about:blank is detected as cross-domain" ) ;
return false ;
}
} ) ;
2011-01-09 16:27:29 +00:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 15:50:13 +00:00
url : loc . protocol + "//" + loc . host ,
crossDomain : true ,
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test forced crossDomain is detected as cross-domain" ) ;
return false ;
}
2011-01-09 16:27:29 +00:00
} ) ;
2011-01-09 15:50:13 +00:00
2011-01-09 05:01:00 +00:00
} ) ;
2011-02-05 02:06:21 +00:00
test ( ".load() - 404 error callbacks" , function ( ) {
2010-01-25 02:58:32 +00:00
expect ( 6 ) ;
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-01-25 02:58:32 +00:00
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 ( "<div/>" ) . load ( "data/404.html" , function ( ) {
ok ( true , "complete" ) ;
} ) ;
} ) ;
2010-01-06 17:13:56 +00:00
test ( "jQuery.ajax() - abort" , function ( ) {
2010-11-06 18:52:30 +00:00
expect ( 8 ) ;
2010-01-06 17:13:56 +00:00
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2010-01-06 17:13:56 +00:00
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) ;
var xhr = jQuery . ajax ( {
url : url ( "data/name.php?wait=5" ) ,
beforeSend : function ( ) { ok ( true , "beforeSend" ) ; } ,
complete : function ( ) { ok ( true , "complete" ) ; }
} ) ;
2011-11-06 20:27:42 +00:00
equal ( xhr . readyState , 1 , "XHR readyState indicates successful dispatch" ) ;
2010-11-06 18:52:30 +00:00
2010-01-06 17:13:56 +00:00
xhr . abort ( ) ;
2011-11-06 20:27:42 +00:00
equal ( xhr . readyState , 0 , "XHR readyState indicates successful abortion" ) ;
2010-01-06 17:13:56 +00:00
} ) ;
2009-09-15 15:19:58 +00:00
test ( "Ajax events with context" , function ( ) {
2010-01-16 15:11:01 +00:00
expect ( 14 ) ;
2010-12-30 06:34:48 +00:00
2009-09-15 15:19:58 +00:00
stop ( ) ;
2009-11-17 19:36:10 +00:00
var context = document . createElement ( "div" ) ;
2010-12-30 06:34:48 +00:00
2009-09-15 15:19:58 +00:00
function event ( e ) {
2011-11-06 20:27:42 +00:00
equal ( this , context , e . type ) ;
2009-09-15 15:19:58 +00:00
}
2010-01-16 15:11:01 +00:00
function callback ( msg ) {
return function ( ) {
2011-11-06 20:27:42 +00:00
equal ( this , context , "context is preserved on callback " + msg ) ;
2010-01-16 15:11:01 +00:00
} ;
}
function nocallback ( msg ) {
return function ( ) {
2011-11-06 20:27:42 +00:00
equal ( typeof this . url , "string" , "context is settings on callback " + msg ) ;
2010-01-16 15:11:01 +00:00
} ;
2009-09-15 15:19:58 +00:00
}
2010-12-30 06:34:48 +00:00
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . add ( context )
2009-09-15 15:19:58 +00:00
. ajaxSend ( event )
. ajaxComplete ( event )
. ajaxError ( event )
. ajaxSuccess ( event ) ;
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
2010-01-16 15:11:01 +00:00
beforeSend : callback ( "beforeSend" ) ,
success : callback ( "success" ) ,
error : callback ( "error" ) ,
2009-09-15 15:19:58 +00:00
complete : function ( ) {
2010-01-16 15:11:01 +00:00
callback ( "complete" ) . call ( this ) ;
jQuery . ajax ( {
url : url ( "data/404.html" ) ,
context : context ,
beforeSend : callback ( "beforeSend" ) ,
error : callback ( "error" ) ,
complete : function ( ) {
callback ( "complete" ) . call ( this ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . add ( context ) . unbind ( ) ;
2010-01-16 15:11:01 +00:00
jQuery . ajax ( {
url : url ( "data/404.html" ) ,
beforeSend : nocallback ( "beforeSend" ) ,
error : nocallback ( "error" ) ,
complete : function ( ) {
nocallback ( "complete" ) . call ( this ) ;
start ( ) ;
}
} ) ;
}
} ) ;
2009-09-15 15:19:58 +00:00
} ,
context : context
} ) ;
} ) ;
2010-01-25 06:08:24 +00:00
test ( "jQuery.ajax context modification" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2011-01-07 14:52:58 +00:00
var obj = { } ;
2010-01-25 06:08:24 +00:00
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
context : obj ,
beforeSend : function ( ) {
this . test = "foo" ;
} ,
complete : function ( ) {
start ( ) ;
}
} ) ;
2011-11-06 20:27:42 +00:00
equal ( obj . test , "foo" , "Make sure the original object is maintained." ) ;
2010-01-25 06:08:24 +00:00
} ) ;
2011-01-20 03:12:15 +00:00
test ( "jQuery.ajax context modification through ajaxSetup" , function ( ) {
expect ( 4 ) ;
stop ( ) ;
var obj = { } ;
jQuery . ajaxSetup ( {
context : obj
} ) ;
strictEqual ( jQuery . ajaxSettings . context , obj , "Make sure the context is properly set in ajaxSettings." ) ;
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 ( ) ;
}
} ) ;
}
} ) ;
}
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax() - disabled globals" , function ( ) {
2007-09-03 23:45:14 +00:00
expect ( 3 ) ;
stop ( ) ;
2009-05-01 00:59:27 +00:00
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . ajaxStart ( function ( ) {
2007-09-03 23:45:14 +00:00
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" ) ;
} ) ;
2009-05-01 00:59:27 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2007-09-03 23:45:14 +00:00
global : false ,
url : url ( "data/name.html" ) ,
beforeSend : function ( ) { ok ( true , "beforeSend" ) ; } ,
success : function ( ) { ok ( true , "success" ) ; } ,
error : function ( ) { ok ( false , "error" ) ; } ,
complete : function ( ) {
2012-05-18 17:28:50 +00:00
ok ( true , "complete" ) ;
setTimeout ( function ( ) { start ( ) ; } , 13 ) ;
2009-05-01 00:59:27 +00:00
}
2007-09-03 23:45:14 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax - xml: non-namespace elements inside namespaced elements" , function ( ) {
2007-09-03 23:45:14 +00:00
expect ( 3 ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
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 ( ) ;
}
2007-09-03 23:45:14 +00:00
} ) ;
} ) ;
2010-12-09 18:34:28 +00:00
test ( "jQuery.ajax - xml: non-namespace elements inside namespaced elements (over JSONP)" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
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 ( ) ;
}
2010-12-09 18:34:28 +00:00
} ) ;
} ) ;
2010-10-23 17:23:51 +00:00
test ( "jQuery.ajax - HEAD requests" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
type : "HEAD" ,
success : function ( data , status , xhr ) {
var h = xhr . getAllResponseHeaders ( ) ;
2011-04-11 20:33:29 +00:00
ok ( /Date/i . test ( h ) , "No Date in HEAD response" ) ;
2010-12-30 06:34:48 +00:00
2010-10-23 17:23:51 +00:00
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
2012-07-05 19:52:13 +00:00
data : { "whip_it" : "good" } ,
2010-10-23 17:23:51 +00:00
type : "HEAD" ,
success : function ( data , status , xhr ) {
var h = xhr . getAllResponseHeaders ( ) ;
2011-04-11 20:33:29 +00:00
ok ( /Date/i . test ( h ) , "No Date in HEAD response with data" ) ;
2010-10-23 17:23:51 +00:00
start ( ) ;
}
} ) ;
}
} ) ;
2010-12-09 18:34:28 +00:00
2010-10-23 17:23:51 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax - beforeSend" , function ( ) {
2007-09-03 23:45:14 +00:00
expect ( 1 ) ;
stop ( ) ;
2009-05-01 00:59:27 +00:00
2007-09-03 23:45:14 +00:00
var check = false ;
2009-05-01 00:59:27 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2009-05-01 00:59:27 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2009-05-01 00:59:27 +00:00
url : url ( "data/name.html" ) ,
2007-09-03 23:45:14 +00:00
beforeSend : function ( xml ) {
check = true ;
} ,
success : function ( data ) {
ok ( check , "check beforeSend was executed" ) ;
start ( ) ;
}
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax - beforeSend, cancel request (#2688)" , function ( ) {
2008-04-22 22:07:17 +00:00
expect ( 2 ) ;
2012-04-01 23:54:19 +00:00
jQuery . ajax ( {
2009-05-01 00:59:27 +00:00
url : url ( "data/name.html" ) ,
2008-04-22 22:07:17 +00:00
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" ) ;
}
2012-04-01 23:54:19 +00:00
} ) . fail ( function ( _ , reason ) {
strictEqual ( reason , "canceled" , "canceled request must fail with 'canceled' status text" ) ;
2008-04-22 22:07:17 +00:00
} ) ;
} ) ;
2010-12-09 18:34:28 +00:00
test ( "jQuery.ajax - beforeSend, cancel request manually" , function ( ) {
expect ( 2 ) ;
2012-04-01 23:54:19 +00:00
jQuery . ajax ( {
2010-12-09 18:34:28 +00:00
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" ) ;
}
2012-04-01 23:54:19 +00:00
} ) . fail ( function ( _ , reason ) {
2012-04-02 00:04:46 +00:00
strictEqual ( reason , "canceled" , "manually canceled request must fail with 'canceled' status text" ) ;
2010-12-09 18:34:28 +00:00
} ) ;
} ) ;
2012-07-05 19:52:13 +00:00
window [ "foobar" ] = null ;
window [ "testFoo" ] = undefined ;
2009-01-12 01:12:58 +00:00
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax - dataType html" , function ( ) {
2007-09-03 23:45:14 +00:00
expect ( 5 ) ;
stop ( ) ;
2009-05-01 00:59:27 +00:00
2007-09-03 23:45:14 +00:00
var verifyEvaluation = function ( ) {
2012-07-05 19:52:13 +00:00
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" ) ;
2009-05-01 00:59:27 +00:00
2009-01-10 00:16:48 +00:00
start ( ) ;
2007-09-03 23:45:14 +00:00
} ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
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 ) ;
}
2007-09-03 23:45:14 +00:00
} ) ;
} ) ;
2007-08-19 23:37:26 +00:00
2006-11-30 20:52:24 +00:00
test ( "serialize()" , function ( ) {
2009-08-26 16:29:46 +00:00
expect ( 5 ) ;
2009-05-01 00:59:27 +00:00
2009-12-17 02:02:58 +00:00
// Add html5 elements only for serialize because selector can't yet find them on non-html5 browsers
jQuery ( "#search" ) . after (
2011-04-11 20:33:29 +00:00
"<input type='email' id='html5email' name='email' value='dave@jquery.com' />" +
"<input type='number' id='html5number' name='number' value='43' />"
2009-12-17 02:02:58 +00:00
) ;
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#form" ) . serialize ( ) ,
2010-09-30 22:40:30 +00:00
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3" ,
2011-04-11 20:33:29 +00:00
"Check form serialization as query string" ) ;
2009-05-01 00:59:27 +00:00
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#form :input" ) . serialize ( ) ,
2010-09-30 22:40:30 +00:00
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3" ,
2011-04-11 20:33:29 +00:00
"Check input serialization as query string" ) ;
2009-05-01 00:59:27 +00:00
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#testForm" ) . serialize ( ) ,
2011-04-11 20:33:29 +00:00
"T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=" ,
"Check form serialization as query string" ) ;
2009-05-01 00:59:27 +00:00
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#testForm :input" ) . serialize ( ) ,
2011-04-11 20:33:29 +00:00
"T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=" ,
"Check input serialization as query string" ) ;
2009-05-01 00:59:27 +00:00
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#form, #testForm" ) . serialize ( ) ,
2010-12-31 19:56:51 +00:00
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3&T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=" ,
2011-04-11 20:33:29 +00:00
"Multiple form serialization as query string" ) ;
2009-05-01 00:59:27 +00:00
2012-05-18 17:28:50 +00:00
/ * T e m p o r a r i l y d i s a b l e d . O p e r a 1 0 h a s p r o b l e m s w i t h f o r m s e r i a l i z a t i o n .
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#form, #testForm :input" ) . serialize ( ) ,
2010-12-31 19:56:51 +00:00
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=" ,
2011-04-11 20:33:29 +00:00
"Mixed form/input serialization as query string" ) ;
2009-08-26 16:29:46 +00:00
* /
2009-12-17 02:02:58 +00:00
jQuery ( "#html5email, #html5number" ) . remove ( ) ;
2006-11-30 20:52:24 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.param()" , function ( ) {
2012-04-05 15:06:54 +00:00
expect ( 22 ) ;
2010-12-30 06:34:48 +00:00
2011-11-06 20:27:42 +00:00
equal ( ! jQuery . ajaxSettings . traditional , true , "traditional flag, falsy by default" ) ;
2010-12-30 06:34:48 +00:00
2012-07-05 19:52:13 +00:00
var params = { "foo" : "bar" , "baz" : 42 , "quux" : "All your base are belong to us" } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo=bar&baz=42&quux=All+your+base+are+belong+to+us" , "simple" ) ;
2009-09-17 22:37:19 +00:00
2012-04-05 15:06:54 +00:00
params = { "string" : "foo" , "null" : null , "undefined" : undefined } ;
equal ( jQuery . param ( params ) , "string=foo&null=&undefined=" , "handle nulls and undefineds properly" ) ;
2012-07-05 19:52:13 +00:00
params = { "someName" : [ 1 , 2 , 3 ] , "regularThing" : "blah" } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "someName%5B%5D=1&someName%5B%5D=2&someName%5B%5D=3®ularThing=blah" , "with array" ) ;
2009-09-17 22:37:19 +00:00
2012-07-05 19:52:13 +00:00
params = { "foo" : [ "a" , "b" , "c" ] } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo%5B%5D=a&foo%5B%5D=b&foo%5B%5D=c" , "with array of strings" ) ;
2009-09-17 22:37:19 +00:00
2012-07-05 19:52:13 +00:00
params = { "foo" : [ "baz" , 42 , "All your base are belong to us" ] } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=All+your+base+are+belong+to+us" , "more array" ) ;
2009-09-17 22:37:19 +00:00
2012-07-05 19:52:13 +00:00
params = { "foo" : { "bar" : "baz" , "beep" : 42 , "quux" : "All your base are belong to us" } } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us" , "even more arrays" ) ;
2010-12-30 06:34:48 +00:00
2009-09-17 22:37:19 +00:00
params = { a : [ 1 , 2 ] , b : { c : 3 , d : [ 4 , 5 ] , e : { x : [ 6 ] , y : 7 , z : [ 8 , 9 ] } , f : true , g : false , h : undefined } , i : [ 10 , 11 ] , j : true , k : false , l : [ undefined , 0 ] , m : "cowboy hat?" } ;
2012-04-05 15:06:54 +00:00
equal ( decodeURIComponent ( jQuery . param ( params ) ) , "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=&i[]=10&i[]=11&j=true&k=false&l[]=&l[]=0&m=cowboy+hat?" , "huge structure" ) ;
2010-12-30 06:34:48 +00:00
2012-07-05 19:52:13 +00:00
params = { "a" : [ 0 , [ 1 , 2 ] , [ 3 , [ 4 , 5 ] , [ 6 ] ] , { "b" : [ 7 , [ 8 , 9 ] , [ { "c" : 10 , "d" : 11 } ] , [ [ 12 ] ] , [ [ [ 13 ] ] ] , { "e" : { "f" : { "g" : [ 14 , [ 15 ] ] } } } , 16 ] } , 17 ] } ;
2011-11-06 20:27:42 +00:00
equal ( decodeURIComponent ( jQuery . param ( params ) ) , "a[]=0&a[1][]=1&a[1][]=2&a[2][]=3&a[2][1][]=4&a[2][1][]=5&a[2][2][]=6&a[3][b][]=7&a[3][b][1][]=8&a[3][b][1][]=9&a[3][b][2][0][c]=10&a[3][b][2][0][d]=11&a[3][b][3][0][]=12&a[3][b][4][0][0][]=13&a[3][b][5][e][f][g][]=14&a[3][b][5][e][f][g][1][]=15&a[3][b][]=16&a[]=17" , "nested arrays" ) ;
2010-12-30 06:34:48 +00:00
2012-07-05 19:52:13 +00:00
params = { "a" : [ 1 , 2 ] , "b" : { "c" : 3 , "d" : [ 4 , 5 ] , "e" : { "x" : [ 6 ] , "y" : 7 , "z" : [ 8 , 9 ] } , "f" : true , "g" : false , "h" : undefined } , "i" : [ 10 , 11 ] , "j" : true , "k" : false , "l" : [ undefined , 0 ] , "m" : "cowboy hat?" } ;
2012-04-05 15:06:54 +00:00
equal ( jQuery . param ( params , true ) , "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=&l=0&m=cowboy+hat%3F" , "huge structure, forced traditional" ) ;
2010-02-06 00:43:31 +00:00
2012-07-05 19:52:13 +00:00
equal ( decodeURIComponent ( jQuery . param ( { "a" : [ 1 , 2 , 3 ] , "b[]" : [ 4 , 5 , 6 ] , "c[d]" : [ 7 , 8 , 9 ] , "e" : { "f" : [ 10 ] , "g" : [ 11 , 12 ] , "h" : 13 } } ) ) , "a[]=1&a[]=2&a[]=3&b[]=4&b[]=5&b[]=6&c[d][]=7&c[d][]=8&c[d][]=9&e[f][]=10&e[g][]=11&e[g][]=12&e[h]=13" , "Make sure params are not double-encoded." ) ;
2010-09-24 20:57:25 +00:00
2011-02-01 23:32:29 +00:00
// #7945
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( { "jquery" : "1.4.2" } ) , "jquery=1.4.2" , "Check that object with a jQuery property get serialized correctly" ) ;
2011-02-01 23:32:29 +00:00
2009-12-22 13:09:56 +00:00
jQuery . ajaxSetup ( { traditional : true } ) ;
2010-12-30 06:34:48 +00:00
2012-07-05 19:52:13 +00:00
params = { "foo" : "bar" , "baz" : 42 , "quux" : "All your base are belong to us" } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo=bar&baz=42&quux=All+your+base+are+belong+to+us" , "simple" ) ;
2009-05-01 00:59:27 +00:00
2012-07-05 19:52:13 +00:00
params = { "someName" : [ 1 , 2 , 3 ] , "regularThing" : "blah" } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "someName=1&someName=2&someName=3®ularThing=blah" , "with array" ) ;
2009-05-01 00:59:27 +00:00
2012-07-05 19:52:13 +00:00
params = { "foo" : [ "a" , "b" , "c" ] } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo=a&foo=b&foo=c" , "with array of strings" ) ;
2009-09-02 05:16:21 +00:00
2006-11-30 20:52:24 +00:00
params = { "foo[]" : [ "baz" , 42 , "All your base are belong to us" ] } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=All+your+base+are+belong+to+us" , "more array" ) ;
2009-05-01 00:59:27 +00:00
2006-11-30 20:52:24 +00:00
params = { "foo[bar]" : "baz" , "foo[beep]" : 42 , "foo[quux]" : "All your base are belong to us" } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us" , "even more arrays" ) ;
2010-12-30 06:34:48 +00:00
2009-09-17 22:37:19 +00:00
params = { a : [ 1 , 2 ] , b : { c : 3 , d : [ 4 , 5 ] , e : { x : [ 6 ] , y : 7 , z : [ 8 , 9 ] } , f : true , g : false , h : undefined } , i : [ 10 , 11 ] , j : true , k : false , l : [ undefined , 0 ] , m : "cowboy hat?" } ;
2012-04-05 15:06:54 +00:00
equal ( jQuery . param ( params ) , "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=&l=0&m=cowboy+hat%3F" , "huge structure" ) ;
2010-12-30 06:34:48 +00:00
2012-07-05 19:52:13 +00:00
params = { "a" : [ 0 , [ 1 , 2 ] , [ 3 , [ 4 , 5 ] , [ 6 ] ] , { "b" : [ 7 , [ 8 , 9 ] , [ { "c" : 10 , d : 11 } ] , [ [ 12 ] ] , [ [ [ 13 ] ] ] , { "e" : { "f" : { "g" : [ 14 , [ 15 ] ] } } } , 16 ] } , 17 ] } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params ) , "a=0&a=1%2C2&a=3%2C4%2C5%2C6&a=%5Bobject+Object%5D&a=17" , "nested arrays (not possible when jQuery.param.traditional == true)" ) ;
2010-12-30 06:34:48 +00:00
2009-12-22 13:09:56 +00:00
params = { a : [ 1 , 2 ] , b : { c : 3 , d : [ 4 , 5 ] , e : { x : [ 6 ] , y : 7 , z : [ 8 , 9 ] } , f : true , g : false , h : undefined } , i : [ 10 , 11 ] , j : true , k : false , l : [ undefined , 0 ] , m : "cowboy hat?" } ;
2012-04-05 15:06:54 +00:00
equal ( decodeURIComponent ( jQuery . param ( params , false ) ) , "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=&i[]=10&i[]=11&j=true&k=false&l[]=&l[]=0&m=cowboy+hat?" , "huge structure, forced not traditional" ) ;
2010-12-30 06:34:48 +00:00
2012-07-05 19:52:13 +00:00
params = { "param1" : null } ;
2012-04-05 15:06:54 +00:00
equal ( jQuery . param ( params , false ) , "param1=" , "Make sure that null params aren't traversed." ) ;
2011-01-31 14:58:27 +00:00
2011-04-11 20:33:29 +00:00
params = { "test" : { "length" : 3 , "foo" : "bar" } } ;
2011-11-06 20:27:42 +00:00
equal ( jQuery . param ( params , false ) , "test%5Blength%5D=3&test%5Bfoo%5D=bar" , "Sub-object with a length property" ) ;
2007-07-09 03:08:20 +00:00
} ) ;
2011-12-06 21:02:54 +00:00
test ( "jQuery.param() Constructed prop values" , function ( ) {
2012-01-13 01:14:51 +00:00
expect ( 4 ) ;
2011-12-06 21:02:54 +00:00
2012-07-05 19:52:13 +00:00
/** @constructor */
2012-01-13 01:14:51 +00:00
function Record ( ) {
2012-07-05 19:52:13 +00:00
this [ "prop" ] = "val" ;
2012-01-13 01:14:51 +00:00
}
2012-06-21 19:30:24 +00:00
var MyString = String ,
MyNumber = Number ,
params = { "test" : new MyString ( "foo" ) } ;
2011-12-06 21:02:54 +00:00
equal ( jQuery . param ( params , false ) , "test=foo" , "Do not mistake new String() for a plain object" ) ;
2012-06-21 19:30:24 +00:00
params = { "test" : new MyNumber ( 5 ) } ;
2011-12-06 21:02:54 +00:00
equal ( jQuery . param ( params , false ) , "test=5" , "Do not mistake new Number() for a plain object" ) ;
2012-01-13 01:14:51 +00:00
params = { "test" : new Date ( ) } ;
2011-12-06 21:02:54 +00:00
ok ( jQuery . param ( params , false ) , "(Non empty string returned) Do not mistake new Date() for a plain object" ) ;
2012-01-13 01:14:51 +00:00
// should allow non-native constructed objects
params = { "test" : new Record ( ) } ;
2012-07-05 19:52:13 +00:00
equal ( jQuery . param ( params , false ) , jQuery . param ( { "test" : { "prop" : "val" } } ) , "Allow non-native constructed objects" ) ;
2011-12-06 21:02:54 +00:00
} ) ;
2007-07-09 03:08:20 +00:00
test ( "synchronous request" , function ( ) {
2007-08-19 23:37:26 +00:00
expect ( 1 ) ;
2012-06-21 19:30:24 +00:00
var response = jQuery . ajax ( {
url : url ( "data/json_obj.js" ) ,
dataType : "text" ,
async : false
} ) . responseText ;
ok ( /^\{ "data"/ . test ( response ) , "check returned text" ) ;
2007-07-09 03:08:20 +00:00
} ) ;
test ( "synchronous request with callbacks" , function ( ) {
expect ( 2 ) ;
var result ;
2010-01-07 17:21:58 +00:00
jQuery . ajax ( { url : url ( "data/json_obj.js" ) , async : false , dataType : "text" , success : function ( data ) { ok ( true , "sucess callback executed" ) ; result = data ; } } ) ;
2012-06-21 19:30:24 +00:00
ok ( /^\{ "data"/ . test ( result ) , "check returned text" ) ;
2007-07-09 03:08:20 +00:00
} ) ;
2006-12-15 09:13:24 +00:00
test ( "pass-through request object" , function ( ) {
2007-12-05 23:03:58 +00:00
expect ( 8 ) ;
2008-10-24 14:40:58 +00:00
stop ( ) ;
2009-05-01 00:59:27 +00:00
2007-08-19 23:37:26 +00:00
var target = "data/name.html" ;
2007-12-05 23:03:58 +00:00
var successCount = 0 ;
var errorCount = 0 ;
2009-01-10 00:16:48 +00:00
var errorEx = "" ;
2006-12-15 09:13:24 +00:00
var success = function ( ) {
2007-12-05 23:03:58 +00:00
successCount ++ ;
2007-08-19 23:37:26 +00:00
} ;
2008-05-28 23:18:25 +00:00
jQuery ( "#foo" ) . ajaxError ( function ( e , xml , s , ex ) {
2007-12-05 23:03:58 +00:00
errorCount ++ ;
2009-01-10 00:16:48 +00:00
errorEx += ": " + xml . status ;
2007-12-05 23:03:58 +00:00
} ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . one ( "ajaxStop" , function ( ) {
2011-11-06 20:27:42 +00:00
equal ( successCount , 5 , "Check all ajax calls successful" ) ;
equal ( errorCount , 0 , "Check no ajax errors (status" + errorEx + ")" ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#foo" ) . unbind ( "ajaxError" ) ;
2009-05-01 00:59:27 +00:00
2007-12-05 23:03:58 +00:00
start ( ) ;
} ) ;
2009-05-01 00:59:27 +00:00
2008-05-28 23:18:25 +00:00
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" ) ;
2006-12-15 09:13:24 +00:00
} ) ;
2007-12-04 04:43:45 +00:00
test ( "ajax cache" , function ( ) {
expect ( 18 ) ;
2010-12-30 06:34:48 +00:00
2007-12-04 04:43:45 +00:00
stop ( ) ;
2009-05-01 00:59:27 +00:00
2007-12-04 04:43:45 +00:00
var count = 0 ;
2008-05-28 23:18:25 +00:00
jQuery ( "#firstp" ) . bind ( "ajaxSuccess" , function ( e , xml , s ) {
2007-12-04 04:43:45 +00:00
var re = /_=(.*?)(&|$)/g ;
2009-09-15 15:19:58 +00:00
var oldOne = null ;
2007-12-04 04:43:45 +00:00
for ( var i = 0 ; i < 6 ; i ++ ) {
2009-09-15 15:19:58 +00:00
var ret = re . exec ( s . url ) ;
2007-12-04 04:43:45 +00:00
if ( ! ret ) {
break ;
}
2009-09-15 15:19:58 +00:00
oldOne = ret [ 1 ] ;
2007-12-04 04:43:45 +00:00
}
2011-11-06 20:27:42 +00:00
equal ( i , 1 , "Test to make sure only one 'no-cache' parameter is there" ) ;
2007-12-04 04:43:45 +00:00
ok ( oldOne != "tobereplaced555" , "Test to be sure parameter (if it was there) was replaced" ) ;
2012-06-21 19:30:24 +00:00
if ( ++ count == 6 ) {
2007-12-04 04:43:45 +00:00
start ( ) ;
2012-06-21 19:30:24 +00:00
}
2007-12-04 04:43:45 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
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" ) ;
2007-12-04 04:43:45 +00:00
} ) ;
2009-11-07 15:08:07 +00:00
/ *
* Test disabled .
* The assertions expect that the passed - in object will be modified ,
* which shouldn ' t be the case . Fixes # 5439.
2007-08-19 23:37:26 +00:00
test ( "global ajaxSettings" , function ( ) {
2008-05-07 01:16:54 +00:00
expect ( 2 ) ;
2007-08-19 23:37:26 +00:00
var tmp = jQuery . extend ( { } , jQuery . ajaxSettings ) ;
2009-05-01 00:59:27 +00:00
var orig = { url : "data/with_fries.xml" } ;
2007-08-19 23:37:26 +00:00
var t ;
2011-04-11 20:33:29 +00:00
jQuery . ajaxSetup ( { data : { foo : "bar" , bar : "BAR" } } ) ;
2007-08-19 23:37:26 +00:00
2009-05-01 00:59:27 +00:00
t = jQuery . extend ( { } , orig ) ;
2007-08-19 23:37:26 +00:00
t . data = { } ;
2009-05-01 00:59:27 +00:00
jQuery . ajax ( t ) ;
2011-04-11 20:33:29 +00:00
ok ( t . url . indexOf ( "foo" ) > - 1 && t . url . indexOf ( "bar" ) > - 1 , "Check extending {}" ) ;
2007-08-19 23:37:26 +00:00
2009-05-01 00:59:27 +00:00
t = jQuery . extend ( { } , orig ) ;
2011-04-11 20:33:29 +00:00
t . data = { zoo : "a" , ping : "b" } ;
2009-05-01 00:59:27 +00:00
jQuery . ajax ( t ) ;
2011-04-11 20:33:29 +00:00
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 " }" ) ;
2009-05-01 00:59:27 +00:00
2007-08-19 23:37:26 +00:00
jQuery . ajaxSettings = tmp ;
} ) ;
2009-11-07 15:08:07 +00:00
* /
2007-08-19 23:37:26 +00:00
test ( "load(String)" , function ( ) {
expect ( 1 ) ;
2008-10-24 14:40:58 +00:00
stop ( ) ; // check if load can be called with only url
2011-10-01 20:49:49 +00:00
jQuery ( "#first" ) . load ( "data/name.html" , function ( ) {
start ( ) ;
} ) ;
2007-08-19 23:37:26 +00:00
} ) ;
2007-08-25 03:55:12 +00:00
test ( "load('url selector')" , function ( ) {
expect ( 1 ) ;
2008-10-24 14:40:58 +00:00
stop ( ) ; // check if load can be called with only url
2011-04-11 20:33:29 +00:00
jQuery ( "#first" ) . load ( "data/test3.html div.user" , function ( ) {
2011-11-06 20:27:42 +00:00
equal ( jQuery ( this ) . children ( "div" ) . length , 2 , "Verify that specific elements were injected" ) ;
2007-08-25 03:55:12 +00:00
start ( ) ;
} ) ;
} ) ;
2007-12-14 17:06:41 +00:00
test ( "load(String, Function) with ajaxSetup on dataType json, see #2046" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { dataType : "json" } ) ;
jQuery ( "#first" ) . ajaxComplete ( function ( e , xml , s ) {
2011-11-06 20:27:42 +00:00
equal ( s . dataType , "html" , "Verify the load() dataType was html" ) ;
2008-05-28 23:18:25 +00:00
jQuery ( "#first" ) . unbind ( "ajaxComplete" ) ;
jQuery . ajaxSetup ( { dataType : "" } ) ;
2007-12-14 17:06:41 +00:00
start ( ) ;
} ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#first" ) . load ( "data/test3.html" ) ;
2007-12-14 17:06:41 +00:00
} ) ;
2007-08-19 23:37:26 +00:00
test ( "load(String, Function) - simple: inject text into DOM" , function ( ) {
2006-11-21 09:55:34 +00:00
expect ( 2 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery ( "#first" ) . load ( url ( "data/name.html" ) , function ( ) {
ok ( /^ERROR/ . test ( jQuery ( "#first" ) . text ( ) ) , "Check if content was injected into the DOM" ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
} ) ;
} ) ;
2007-08-19 23:37:26 +00:00
test ( "load(String, Function) - check scripts" , function ( ) {
2006-11-21 09:55:34 +00:00
expect ( 7 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2009-05-01 00:59:27 +00:00
2006-11-18 13:37:01 +00:00
var verifyEvaluation = function ( ) {
2012-07-05 19:52:13 +00:00
equal ( window [ "foobar" ] , "bar" , "Check if script src was evaluated after load" ) ;
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#ap" ) . html ( ) , "bar" , "Check if script evaluation has modified DOM" ) ;
2009-05-01 00:59:27 +00:00
2009-01-09 23:49:18 +00:00
start ( ) ;
2006-11-18 13:37:01 +00:00
} ;
2011-04-11 20:33:29 +00:00
jQuery ( "#first" ) . load ( url ( "data/test.html" ) , function ( ) {
ok ( jQuery ( "#first" ) . html ( ) . match ( /^html text/ ) , "Check content after loading html" ) ;
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#foo" ) . html ( ) , "foo" , "Check if script evaluation has modified DOM" ) ;
2012-07-05 19:52:13 +00:00
equal ( window [ "testFoo" ] , "foo" , "Check if script was evaluated after load" ) ;
2007-12-14 17:06:41 +00:00
setTimeout ( verifyEvaluation , 600 ) ;
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2007-08-19 23:37:26 +00:00
test ( "load(String, Function) - check file with only a script tag" , function ( ) {
2006-12-31 15:44:59 +00:00
expect ( 3 ) ;
stop ( ) ;
2009-01-12 01:12:58 +00:00
2011-04-11 20:33:29 +00:00
jQuery ( "#first" ) . load ( url ( "data/test2.html" ) , function ( ) {
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "#foo" ) . html ( ) , "foo" , "Check if script evaluation has modified DOM" ) ;
2012-07-05 19:52:13 +00:00
equal ( window [ "testFoo" ] , "foo" , "Check if script was evaluated after load" ) ;
2009-05-01 00:59:27 +00:00
2007-12-14 17:06:41 +00:00
start ( ) ;
2006-12-31 15:44:59 +00:00
} ) ;
} ) ;
2011-01-11 19:02:33 +00:00
test ( "load(String, Function) - dataFilter in ajaxSettings" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
jQuery . ajaxSetup ( { dataFilter : function ( ) { return "Hello World" ; } } ) ;
var div = jQuery ( "<div/>" ) . 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 ( ) ;
} ) ;
} ) ;
2008-05-27 22:46:28 +00:00
test ( "load(String, Object, Function)" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2009-05-01 00:59:27 +00:00
2012-07-05 19:52:13 +00:00
jQuery ( "<div />" ) . load ( url ( "data/params_html.php" ) , { "foo" : 3 , "bar" : "ok" } , function ( ) {
2011-04-11 20:33:29 +00:00
var $post = jQuery ( this ) . find ( "#post" ) ;
2011-11-06 20:27:42 +00:00
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" ) ;
2008-05-27 22:46:28 +00:00
start ( ) ;
} ) ;
} ) ;
test ( "load(String, String, Function)" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2009-05-01 00:59:27 +00:00
2011-04-11 20:33:29 +00:00
jQuery ( "<div />" ) . load ( url ( "data/params_html.php" ) , "foo=3&bar=ok" , function ( ) {
var $get = jQuery ( this ) . find ( "#get" ) ;
2011-11-06 20:27:42 +00:00
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" ) ;
2008-05-27 22:46:28 +00:00
start ( ) ;
} ) ;
} ) ;
2012-05-02 00:15:09 +00:00
asyncTest ( "load() - data specified in ajaxSettings is merged in (#10524)" , 1 , function ( ) {
2012-05-01 18:39:45 +00:00
jQuery . ajaxSetup ( {
2012-07-05 19:52:13 +00:00
data : { "foo" : "bar" }
2012-05-01 18:39:45 +00:00
} ) ;
var data = {
2012-07-05 19:52:13 +00:00
"baz" : 1
2012-05-01 18:39:45 +00:00
} ;
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 ( ) ;
} ) ;
} ) ;
2012-05-02 00:22:56 +00:00
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 ( jqXHR , status ) {
completeArgs [ this . url ] = [ jqXHR . responseText , status , jqXHR ] ;
}
} ) ;
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 ( ) ;
} ) ;
} ) ;
} ) ) . always ( function ( ) {
jQuery . ajaxSetup ( {
success : null ,
error : null
} ) ;
start ( ) ;
} ) ;
} ) ;
2011-02-15 20:47:52 +00:00
test ( "jQuery.get(String, Function) - data in ajaxSettings (#8277)" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
jQuery . ajaxSetup ( {
data : "helloworld"
} ) ;
2011-04-11 20:33:29 +00:00
jQuery . get ( url ( "data/echoQuery.php" ) , function ( data ) {
ok ( /helloworld$/ . test ( data ) , "Data from ajaxSettings was used" ) ;
2011-02-15 20:47:52 +00:00
jQuery . ajaxSetup ( {
data : null
} ) ;
start ( ) ;
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.get(String, Hash, Function) - parse xml and use text() on nodes" , function ( ) {
2007-08-19 23:37:26 +00:00
expect ( 2 ) ;
stop ( ) ;
2011-04-11 20:33:29 +00:00
jQuery . get ( url ( "data/dashboard.xml" ) , function ( xml ) {
2007-08-19 23:37:26 +00:00
var content = [ ] ;
2011-04-11 20:33:29 +00:00
jQuery ( "tab" , xml ) . each ( function ( ) {
2008-05-28 23:18:25 +00:00
content . push ( jQuery ( this ) . text ( ) ) ;
2007-08-19 23:37:26 +00:00
} ) ;
2011-11-06 20:27:42 +00:00
equal ( content [ 0 ] , "blabla" , "Check first tab" ) ;
equal ( content [ 1 ] , "blublu" , "Check second tab" ) ;
2007-08-19 23:37:26 +00:00
start ( ) ;
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.getScript(String, Function) - with callback" , function ( ) {
2011-01-29 00:39:22 +00:00
expect ( 3 ) ;
2007-08-19 23:37:26 +00:00
stop ( ) ;
2011-02-01 15:00:30 +00:00
jQuery . getScript ( url ( "data/test.js" ) , function ( data , _ , jqXHR ) {
2011-11-06 20:27:42 +00:00
equal ( foobar , "bar" , "Check if script was evaluated" ) ;
2011-02-01 15:00:30 +00:00
strictEqual ( data , jqXHR . responseText , "Same-domain script requests returns the source of the script (#8082)" ) ;
2012-03-07 16:55:07 +00:00
setTimeout ( function ( ) {
start ( ) ;
} , 1000 ) ;
2007-08-19 23:37:26 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.getScript(String, Function) - no callback" , function ( ) {
2007-08-19 23:37:26 +00:00
expect ( 1 ) ;
2008-10-24 14:40:58 +00:00
stop ( ) ;
2009-01-10 00:16:48 +00:00
jQuery . getScript ( url ( "data/test.js" ) , function ( ) {
start ( ) ;
} ) ;
2007-08-19 23:37:26 +00:00
} ) ;
2011-01-16 04:27:16 +00:00
jQuery . each ( [ "Same Domain" , "Cross Domain" ] , function ( crossDomain , label ) {
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
test ( "jQuery.ajax() - JSONP, " + label , function ( ) {
2012-04-20 01:02:20 +00:00
expect ( 24 ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
var count = 0 ;
2012-06-21 19:30:24 +00:00
function plus ( ) {
if ( ++ count == 20 ) {
start ( ) ;
}
}
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
stop ( ) ;
2006-11-18 13:37:01 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2011-01-12 17:36:00 +00:00
2012-04-20 01:02:20 +00:00
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 ( ) ;
}
} ) ;
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2011-01-12 17:36:00 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2011-01-12 17:36:00 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2011-01-09 20:48:52 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2009-12-07 01:17:14 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
jsonp : "callback" ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( data [ "data" ] , "JSON results returned (GET, data obj callback)" ) ;
2011-01-16 04:27:16 +00:00
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
}
} ) ;
2010-11-24 22:35:26 +00:00
2012-07-05 19:52:13 +00:00
window [ "jsonpResults" ] = function ( data ) {
ok ( data [ "data" ] , "JSON results returned (GET, custom callback function)" ) ;
window [ "jsonpResults" ] = undefined ;
2010-11-24 22:35:26 +00:00
plus ( ) ;
2011-01-16 04:27:16 +00:00
} ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
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 ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-31 17:53:44 +00:00
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
jsonpCallback : "functionToCleanUp" ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
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)" ) ;
2011-01-31 17:53:44 +00:00
plus ( ) ;
var xhr ;
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
jsonpCallback : "functionToCleanUp" ,
2011-02-01 15:00:30 +00:00
beforeSend : function ( jqXHR ) {
xhr = jqXHR ;
2011-01-31 17:53:44 +00:00
return false ;
}
} ) ;
xhr . error ( function ( ) {
ok ( true , "Ajax error JSON (GET, custom callback name to be cleaned up)" ) ;
2012-07-05 19:52:13 +00:00
strictEqual ( window [ "functionToCleanUp" ] , undefined , "Callback was removed after early abort (GET, custom callback name to be cleaned up)" ) ;
2011-01-31 17:53:44 +00:00
plus ( ) ;
} ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, custom callback name to be cleaned up)" ) ;
plus ( ) ;
}
} ) ;
2011-01-16 04:27:16 +00:00
jQuery . ajax ( {
type : "POST" ,
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( data [ "data" ] , "JSON results returned (POST, no callback)" ) ;
2011-01-16 04:27:16 +00:00
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
jQuery . ajax ( {
type : "POST" ,
url : "data/jsonp.php" ,
data : "callback=?" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( data [ "data" ] , "JSON results returned (POST, data callback)" ) ;
2011-01-16 04:27:16 +00:00
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (POST, data callback)" ) ;
plus ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
jQuery . ajax ( {
type : "POST" ,
url : "data/jsonp.php" ,
jsonp : "callback" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( data [ "data" ] , "JSON results returned (POST, data obj callback)" ) ;
2011-01-16 04:27:16 +00:00
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (POST, data obj callback)" ) ;
plus ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
//#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 ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2011-01-16 04:27:16 +00:00
jQuery . ajax ( {
url : "data/jsonp.php?callback=XXX" ,
dataType : "jsonp" ,
jsonp : false ,
jsonpCallback : "XXX" ,
crossDomain : crossDomain ,
beforeSend : function ( ) {
2011-01-16 04:36:20 +00:00
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 ( ) ;
2011-01-16 04:27:16 +00:00
} ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( data [ "data" ] , "JSON results returned (GET, custom callback name with no url manipulation)" ) ;
2011-01-16 04:27:16 +00:00
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, custom callback name with no url manipulation)" ) ;
plus ( ) ;
}
} ) ;
2007-09-03 23:45:14 +00:00
2012-04-20 01:02:20 +00:00
//#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 ,
beforeSend : function ( ) {
strictEqual ( this . jsonpCallback , previous . callback , "JSONP callback name is re-used" ) ;
return false ;
}
} ) ;
} ) . always ( plus ) ;
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax() - script, Remote" , function ( ) {
2007-09-03 23:45:14 +00:00
expect ( 2 ) ;
2010-03-23 20:24:51 +00:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2007-09-03 23:45:14 +00:00
2006-11-18 13:37:01 +00:00
stop ( ) ;
2007-09-03 23:45:14 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2007-09-03 23:45:14 +00:00
url : base + "data/test.js" ,
dataType : "script" ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( window [ "foobar" ] , "Script results returned (GET, no callback)" ) ;
2007-09-03 23:45:14 +00:00
start ( ) ;
}
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax() - script, Remote with POST" , function ( ) {
2007-12-11 20:16:19 +00:00
expect ( 3 ) ;
2010-03-23 20:24:51 +00:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2010-12-30 06:34:48 +00:00
2007-12-11 20:16:19 +00:00
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2007-12-11 20:16:19 +00:00
url : base + "data/test.js" ,
type : "POST" ,
dataType : "script" ,
success : function ( data , status ) {
2012-07-05 19:52:13 +00:00
ok ( window [ "foobar" ] , "Script results returned (POST, no callback)" ) ;
2011-11-06 20:27:42 +00:00
equal ( status , "success" , "Script results returned (POST, no callback)" ) ;
2009-05-16 20:22:47 +00:00
start ( ) ;
} ,
error : function ( xhr ) {
ok ( false , "ajax error, status code: " + xhr . status ) ;
2007-12-11 20:16:19 +00:00
start ( ) ;
}
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax() - script, Remote with scheme-less URL" , function ( ) {
2007-12-12 20:54:44 +00:00
expect ( 2 ) ;
2010-03-23 20:24:51 +00:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2007-12-12 20:54:44 +00:00
base = base . replace ( /^.*?\/\// , "//" ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2007-12-12 20:54:44 +00:00
url : base + "data/test.js" ,
dataType : "script" ,
success : function ( data ) {
2012-07-05 19:52:13 +00:00
ok ( window [ "foobar" ] , "Script results returned (GET, no callback)" ) ;
2007-12-12 20:54:44 +00:00
start ( ) ;
}
} ) ;
} ) ;
2010-01-07 17:21:58 +00:00
test ( "jQuery.ajax() - malformed JSON" , function ( ) {
2010-01-25 23:48:52 +00:00
expect ( 2 ) ;
2010-01-07 17:21:58 +00:00
stop ( ) ;
jQuery . ajax ( {
url : "data/badjson.js" ,
dataType : "json" ,
success : function ( ) {
ok ( false , "Success." ) ;
start ( ) ;
} ,
2010-01-25 23:48:52 +00:00
error : function ( xhr , msg , detailedMsg ) {
2011-11-06 20:27:42 +00:00
equal ( "parsererror" , msg , "A parse error occurred." ) ;
2011-11-08 18:12:37 +00:00
ok ( /(invalid|error|exception)/i . test ( detailedMsg ) , "Detailed parsererror message provided" ) ;
2012-05-18 17:28:50 +00:00
start ( ) ;
2010-01-07 17:21:58 +00:00
}
} ) ;
} ) ;
2012-05-31 15:31:13 +00:00
test ( "jQuery.ajax() - script, throws exception (#11743)" , function ( ) {
expect ( 1 ) ;
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." ) ;
} ,
error : function ( ) {
ok ( false , "Error." ) ;
}
} ) ;
} , "exception bubbled" ) ;
} ) ;
2010-01-06 15:19:38 +00:00
test ( "jQuery.ajax() - script by content-type" , function ( ) {
2011-01-31 18:14:06 +00:00
expect ( 2 ) ;
2010-01-06 15:19:38 +00:00
stop ( ) ;
2011-01-31 18:14:06 +00:00
jQuery . when (
jQuery . ajax ( {
url : "data/script.php" ,
2012-07-05 19:52:13 +00:00
data : { "header" : "script" }
2011-01-31 18:14:06 +00:00
} ) ,
jQuery . ajax ( {
url : "data/script.php" ,
2012-07-05 19:52:13 +00:00
data : { "header" : "ecma" }
2011-01-31 18:14:06 +00:00
} )
2011-10-01 20:49:49 +00:00
) . always ( function ( ) {
start ( ) ;
} ) ;
2010-01-06 15:19:38 +00:00
} ) ;
2010-01-06 00:48:16 +00:00
test ( "jQuery.ajax() - json by content-type" , function ( ) {
expect ( 5 ) ;
stop ( ) ;
jQuery . ajax ( {
url : "data/json.php" ,
2012-07-05 19:52:13 +00:00
data : { "header" : "json" , "json" : "array" } ,
2010-01-06 00:48:16 +00:00
success : function ( json ) {
2012-05-18 17:28:50 +00:00
ok ( json . length >= 2 , "Check length" ) ;
2012-07-05 19:52:13 +00:00
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" ) ;
2012-05-18 17:28:50 +00:00
start ( ) ;
2010-01-06 00:48:16 +00:00
}
} ) ;
} ) ;
2010-12-09 18:34:28 +00:00
test ( "jQuery.ajax() - json by content-type disabled with options" , function ( ) {
expect ( 6 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/json.php" ) ,
2012-07-05 19:52:13 +00:00
data : { "header" : "json" , "json" : "array" } ,
2010-12-28 01:30:51 +00:00
contents : {
2012-07-05 19:52:13 +00:00
"json" : false
2010-12-09 18:34:28 +00:00
} ,
success : function ( text ) {
2011-11-06 20:27:42 +00:00
equal ( typeof text , "string" , "json wasn't auto-determined" ) ;
2010-12-28 01:30:51 +00:00
var json = jQuery . parseJSON ( text ) ;
2012-05-18 17:28:50 +00:00
ok ( json . length >= 2 , "Check length" ) ;
2012-07-05 19:52:13 +00:00
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" ) ;
2012-05-18 17:28:50 +00:00
start ( ) ;
2010-12-09 18:34:28 +00:00
}
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.getJSON(String, Hash, Function) - JSON array" , function ( ) {
2009-09-15 16:45:37 +00:00
expect ( 5 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2012-07-05 19:52:13 +00:00
jQuery . getJSON ( url ( "data/json.php" ) , { "json" : "array" } , function ( json ) {
2012-05-18 17:28:50 +00:00
ok ( json . length >= 2 , "Check length" ) ;
2012-07-05 19:52:13 +00:00
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" ) ;
2012-05-18 17:28:50 +00:00
start ( ) ;
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.getJSON(String, Function) - JSON object" , function ( ) {
2006-11-18 13:37:01 +00:00
expect ( 2 ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . getJSON ( url ( "data/json.php" ) , function ( json ) {
2012-07-05 19:52:13 +00:00
if ( json && json [ "data" ] ) {
equal ( json [ "data" ] [ "lang" ] , "en" , "Check JSON: lang" ) ;
equal ( json [ "data" ] . length , 25 , "Check JSON: length" ) ;
2012-05-18 17:28:50 +00:00
}
start ( ) ;
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2012-06-21 19:30:24 +00:00
asyncTest ( "jQuery.getJSON - Using Native JSON" , function ( ) {
2009-05-20 21:28:48 +00:00
expect ( 2 ) ;
2010-12-30 06:34:48 +00:00
2009-05-20 21:28:48 +00:00
var old = window . JSON ;
2012-06-21 19:30:24 +00:00
window . JSON = {
parse : function ( str ) {
2009-05-20 21:28:48 +00:00
ok ( true , "Verifying that parse method was run" ) ;
return true ;
}
} ;
2012-06-21 19:30:24 +00:00
jQuery . getJSON ( url ( "data/json.php" ) , function ( json ) {
2009-12-03 16:28:49 +00:00
window . JSON = old ;
2011-11-06 20:27:42 +00:00
equal ( json , true , "Verifying return value" ) ;
2009-12-03 16:28:49 +00:00
start ( ) ;
2009-05-20 21:28:48 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.getJSON(String, Function) - JSON object with absolute url to local content" , function ( ) {
2007-11-29 19:07:20 +00:00
expect ( 2 ) ;
2010-03-23 20:24:51 +00:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2007-11-29 19:07:20 +00:00
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . getJSON ( url ( base + "data/json.php" ) , function ( json ) {
2012-05-18 17:28:50 +00:00
equal ( json . data . lang , "en" , "Check JSON: lang" ) ;
equal ( json . data . length , 25 , "Check JSON: length" ) ;
start ( ) ;
2007-11-29 19:07:20 +00:00
} ) ;
} ) ;
2011-01-31 14:58:27 +00:00
test ( "jQuery.post - data" , 3 , function ( ) {
2010-01-25 05:46:03 +00:00
stop ( ) ;
2011-01-31 14:58:27 +00:00
jQuery . when (
jQuery . post ( url ( "data/name.php" ) , { xml : "5-2" , length : 3 } , function ( xml ) {
2011-10-01 20:49:49 +00:00
jQuery ( "math" , xml ) . each ( function ( ) {
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "calculation" , this ) . text ( ) , "5-2" , "Check for XML" ) ;
equal ( jQuery ( "result" , this ) . text ( ) , "3" , "Check for XML" ) ;
2011-01-31 17:53:44 +00:00
} ) ;
2011-01-31 14:58:27 +00:00
} ) ,
jQuery . ajax ( {
2011-04-11 20:33:29 +00:00
url : url ( "data/echoData.php" ) ,
2011-01-31 14:58:27 +00:00
type : "POST" ,
data : {
2011-04-11 20:33:29 +00:00
"test" : {
"length" : 7 ,
"foo" : "bar"
2011-01-31 14:58:27 +00:00
}
} ,
success : function ( data ) {
2011-04-11 20:33:29 +00:00
strictEqual ( data , "test%5Blength%5D=7&test%5Bfoo%5D=bar" , "Check if a sub-object with a length param is serialized correctly" ) ;
2011-01-31 14:58:27 +00:00
}
} )
2011-10-01 20:49:49 +00:00
) . always ( function ( ) {
2011-09-22 07:35:57 +00:00
start ( ) ;
2011-10-01 20:49:49 +00:00
} ) ;
2011-01-31 14:58:27 +00:00
2010-01-25 05:46:03 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.post(String, Hash, Function) - simple with xml" , function ( ) {
2007-09-15 01:18:30 +00:00
expect ( 4 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2009-01-12 01:12:58 +00:00
var done = 0 ;
2012-07-05 19:52:13 +00:00
jQuery . post ( url ( "data/name.php" ) , { "xml" : "5-2" } , function ( xml ) {
2012-05-18 17:28:50 +00:00
jQuery ( "math" , xml ) . each ( function ( ) {
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "calculation" , this ) . text ( ) , "5-2" , "Check for XML" ) ;
equal ( jQuery ( "result" , this ) . text ( ) , "3" , "Check for XML" ) ;
2012-05-18 17:28:50 +00:00
} ) ;
2012-06-21 19:30:24 +00:00
if ( ++ done === 2 ) {
start ( ) ;
}
2007-09-15 01:18:30 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
jQuery . post ( url ( "data/name.php?xml=5-2" ) , { } , function ( xml ) {
2012-05-18 17:28:50 +00:00
jQuery ( "math" , xml ) . each ( function ( ) {
2011-11-06 20:27:42 +00:00
equal ( jQuery ( "calculation" , this ) . text ( ) , "5-2" , "Check for XML" ) ;
equal ( jQuery ( "result" , this ) . text ( ) , "3" , "Check for XML" ) ;
2012-05-18 17:28:50 +00:00
} ) ;
2012-06-21 19:30:24 +00:00
if ( ++ done === 2 ) {
start ( ) ;
}
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajaxSetup({timeout: Number}) - with global timeout" , function ( ) {
2006-11-18 13:37:01 +00:00
stop ( ) ;
2009-05-01 00:59:27 +00:00
2006-11-18 13:37:01 +00:00
var passed = 0 ;
2007-08-19 23:37:26 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { timeout : 1000 } ) ;
2009-05-01 00:59:27 +00:00
2006-11-18 13:37:01 +00:00
var pass = function ( ) {
passed ++ ;
2007-08-19 23:37:26 +00:00
if ( passed == 2 ) {
2011-04-11 20:33:29 +00:00
ok ( true , "Check local and global callbacks after timeout" ) ;
2011-04-17 06:43:57 +00:00
jQuery ( "#qunit-fixture" ) . unbind ( "ajaxError" ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
}
} ;
2009-05-01 00:59:27 +00:00
2007-08-19 23:37:26 +00:00
var fail = function ( a , b , c ) {
2011-04-11 20:33:29 +00:00
ok ( false , "Check for timeout failed " + a + " " + b ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
} ;
2009-05-01 00:59:27 +00:00
2011-04-17 06:43:57 +00:00
jQuery ( "#qunit-fixture" ) . ajaxError ( pass ) ;
2009-05-01 00:59:27 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
type : "GET" ,
url : url ( "data/name.php?wait=5" ) ,
error : pass ,
success : fail
2006-11-18 13:37:01 +00:00
} ) ;
2009-05-01 00:59:27 +00:00
2006-12-21 13:35:32 +00:00
// reset timeout
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2006-11-18 13:37:01 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajaxSetup({timeout: Number}) with localtimeout" , function ( ) {
2007-09-04 02:55:38 +00:00
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { timeout : 50 } ) ;
2007-09-04 02:55:38 +00:00
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
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 ( ) ;
}
2006-11-18 13:37:01 +00:00
} ) ;
2007-09-04 02:55:38 +00:00
2006-11-18 13:37:01 +00:00
// reset timeout
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2006-11-18 13:37:01 +00:00
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax - simple get" , function ( ) {
2006-11-18 13:37:01 +00:00
expect ( 1 ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
type : "GET" ,
url : url ( "data/name.php?name=foo" ) ,
success : function ( msg ) {
equal ( msg , "bar" , "Check for GET" ) ;
start ( ) ;
}
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2008-05-28 23:18:25 +00:00
test ( "jQuery.ajax - simple post" , function ( ) {
2006-11-18 13:37:01 +00:00
expect ( 1 ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2012-05-18 17:28:50 +00:00
type : "POST" ,
url : url ( "data/name.php" ) ,
data : "name=peter" ,
success : function ( msg ) {
equal ( msg , "pan" , "Check for POST" ) ;
start ( ) ;
}
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
2006-12-22 13:56:36 +00:00
test ( "ajaxSetup()" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajaxSetup ( {
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php?name=foo" ) ,
2006-12-22 13:56:36 +00:00
success : function ( msg ) {
2011-11-06 20:27:42 +00:00
equal ( msg , "bar" , "Check for GET" ) ;
2006-12-22 13:56:36 +00:00
start ( ) ;
}
} ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( ) ;
2006-12-22 13:56:36 +00:00
} ) ;
2007-01-02 12:39:13 +00:00
2009-01-05 22:14:26 +00:00
/ *
2007-03-25 10:55:22 +00:00
test ( "custom timeout does not set error message when timeout occurs, see #970" , function ( ) {
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2009-01-05 22:05:59 +00:00
url : "data/name.php?wait=1" ,
2007-03-25 10:55:22 +00:00
timeout : 500 ,
error : function ( request , status ) {
ok ( status != null , "status shouldn't be null in error handler" ) ;
2011-11-06 20:27:42 +00:00
equal ( "timeout" , status ) ;
2007-03-25 10:55:22 +00:00
start ( ) ;
}
} ) ;
} ) ;
2009-01-05 22:14:26 +00:00
* /
2007-03-25 10:55:22 +00:00
2008-05-06 22:21:43 +00:00
test ( "data option: evaluate function values (#2806)" , function ( ) {
stop ( ) ;
2008-05-28 23:18:25 +00:00
jQuery . ajax ( {
2008-05-06 22:21:43 +00:00
url : "data/echoQuery.php" ,
data : {
key : function ( ) {
return "value" ;
}
} ,
success : function ( result ) {
2011-11-06 20:27:42 +00:00
equal ( result , "key=value" ) ;
2008-05-06 22:21:43 +00:00
start ( ) ;
}
2011-01-07 14:52:58 +00:00
} ) ;
2008-05-06 22:21:43 +00:00
} ) ;
2010-06-15 03:08:28 +00:00
test ( "data option: empty bodies for non-GET requests" , function ( ) {
stop ( ) ;
jQuery . ajax ( {
url : "data/echoData.php" ,
data : undefined ,
type : "post" ,
success : function ( result ) {
2011-11-06 20:27:42 +00:00
equal ( result , "" ) ;
2010-06-15 03:08:28 +00:00
start ( ) ;
}
2011-01-07 14:52:58 +00:00
} ) ;
2010-06-15 03:08:28 +00:00
} ) ;
2011-01-31 18:59:53 +00:00
var ifModifiedNow = new Date ( ) ;
2009-06-15 13:36:12 +00:00
2011-01-31 18:59:53 +00:00
jQuery . each ( { " (cache)" : true , " (no cache)" : false } , function ( label , cache ) {
2009-06-15 13:36:12 +00:00
2011-01-31 18:59:53 +00:00
test ( "jQuery.ajax - If-Modified-Since support" + label , function ( ) {
expect ( 3 ) ;
2009-06-15 13:36:12 +00:00
2011-01-31 18:59:53 +00:00
stop ( ) ;
2010-12-30 06:34:48 +00:00
2011-01-31 18:59:53 +00:00
var url = "data/if_modified_since.php?ts=" + ifModifiedNow ++ ;
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
2011-11-06 20:27:42 +00:00
equal ( status , "success" ) ;
2011-01-31 18:59:53 +00:00
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
if ( data === "FAIL" ) {
2012-06-25 14:02:28 +00:00
ok ( isOpera , "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ) ;
ok ( isOpera , "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ) ;
2011-01-31 18:59:53 +00:00
} else {
2011-11-06 20:27:42 +00:00
equal ( status , "notmodified" ) ;
2011-01-31 18:59:53 +00:00
ok ( data == null , "response body should be empty" ) ;
}
start ( ) ;
2012-05-18 17:28:50 +00:00
} ,
2011-01-31 18:59:53 +00:00
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
2012-06-25 14:02:28 +00:00
ok ( isOpera , "error" ) ;
ok ( isOpera , "error" ) ;
2011-01-31 18:59:53 +00:00
start ( ) ;
2009-07-14 21:13:23 +00:00
}
2011-01-31 18:59:53 +00:00
} ) ;
} ,
error : function ( ) {
2011-11-06 20:27:42 +00:00
equal ( false , "error" ) ;
2011-01-31 18:59:53 +00:00
// 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
2012-06-25 14:02:28 +00:00
ok ( isOpera , "error" ) ;
2011-01-31 18:59:53 +00:00
start ( ) ;
}
} ) ;
2009-06-15 13:36:12 +00:00
} ) ;
2011-01-31 18:59:53 +00:00
test ( "jQuery.ajax - Etag support" + label , function ( ) {
expect ( 3 ) ;
2009-06-15 13:36:12 +00:00
2011-01-31 18:59:53 +00:00
stop ( ) ;
2009-06-15 13:36:12 +00:00
2011-01-31 18:59:53 +00:00
var url = "data/etag.php?ts=" + ifModifiedNow ++ ;
2009-06-15 13:36:12 +00:00
2011-01-31 18:59:53 +00:00
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
2011-11-06 20:27:42 +00:00
equal ( status , "success" ) ;
2010-12-30 06:34:48 +00:00
2011-01-31 18:59:53 +00:00
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
if ( data === "FAIL" ) {
2012-06-25 14:02:28 +00:00
ok ( isOpera , "Opera is incapable of doing .setRequestHeader('If-None-Match')." ) ;
ok ( isOpera , "Opera is incapable of doing .setRequestHeader('If-None-Match')." ) ;
2011-01-31 18:59:53 +00:00
} else {
2011-11-06 20:27:42 +00:00
equal ( status , "notmodified" ) ;
2011-01-31 18:59:53 +00:00
ok ( data == null , "response body should be empty" ) ;
}
start ( ) ;
2012-05-18 17:28:50 +00:00
} ,
error : function ( ) {
2011-01-31 18:59:53 +00:00
// 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
2012-06-25 14:02:28 +00:00
ok ( isOpera , "error" ) ;
ok ( isOpera , "error" ) ;
2011-01-31 18:59:53 +00:00
start ( ) ;
2009-07-14 21:13:23 +00:00
}
2011-01-31 18:59:53 +00:00
} ) ;
} ,
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
2012-06-25 14:02:28 +00:00
ok ( isOpera , "error" ) ;
2011-01-31 18:59:53 +00:00
start ( ) ;
}
} ) ;
2009-06-15 13:36:12 +00:00
} ) ;
} ) ;
2010-12-09 18:34:28 +00:00
test ( "jQuery ajax - failing cross-domain" , function ( ) {
expect ( 2 ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
stop ( ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
var i = 2 ;
2011-01-05 21:41:23 +00:00
2011-01-16 01:57:39 +00:00
jQuery . ajax ( {
2011-04-11 20:33:29 +00:00
url : "http://somewebsitethatdoesnotexist-67864863574657654.com" ,
2010-12-09 18:34:28 +00:00
success : function ( ) { ok ( false , "success" ) ; } ,
error : function ( xhr , _ , e ) { ok ( true , "file not found: " + xhr . status + " => " + e ) ; } ,
2012-06-21 19:30:24 +00:00
complete : function ( ) {
if ( ! -- i ) {
start ( ) ;
}
}
2011-01-16 01:57:39 +00:00
} ) ;
2011-01-05 21:41:23 +00:00
2011-01-16 01:57:39 +00:00
jQuery . ajax ( {
2011-04-11 20:33:29 +00:00
url : "http://www.google.com" ,
2010-12-09 18:34:28 +00:00
success : function ( ) { ok ( false , "success" ) ; } ,
error : function ( xhr , _ , e ) { ok ( true , "access denied: " + xhr . status + " => " + e ) ; } ,
2012-06-21 19:30:24 +00:00
complete : function ( ) {
if ( ! -- i ) {
start ( ) ;
}
}
2011-01-16 01:57:39 +00:00
} ) ;
2011-01-05 21:41:23 +00:00
2010-12-09 18:34:28 +00:00
} ) ;
test ( "jQuery ajax - atom+xml" , function ( ) {
stop ( ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
jQuery . ajax ( {
2011-04-11 20:33:29 +00:00
url : url ( "data/atom+xml.php" ) ,
2010-12-09 18:34:28 +00:00
success : function ( ) { ok ( true , "success" ) ; } ,
error : function ( ) { ok ( false , "error" ) ; } ,
complete : function ( ) { start ( ) ; }
} ) ;
2010-12-30 06:34:48 +00:00
2010-12-09 18:34:28 +00:00
} ) ;
2010-11-17 06:59:24 +00:00
test ( "jQuery.ajax - Location object as url (#7531)" , 1 , function ( ) {
var success = false ;
try {
2010-12-10 06:00:06 +00:00
var xhr = jQuery . ajax ( { url : window . location } ) ;
2010-11-17 06:59:24 +00:00
success = true ;
xhr . abort ( ) ;
} catch ( e ) { }
ok ( success , "document.location did not generate exception" ) ;
} ) ;
2010-04-29 03:45:34 +00:00
2011-07-23 00:10:17 +00:00
test ( "jQuery.ajax - Context with circular references (#9887)" , 2 , function ( ) {
var success = false ,
context = { } ;
context . field = context ;
try {
2012-04-01 23:54:19 +00:00
jQuery . ajax ( "non-existing" , {
2011-07-23 00:10:17 +00:00
context : context ,
beforeSend : function ( ) {
ok ( this === context , "context was not deep extended" ) ;
return false ;
}
} ) ;
2012-04-01 23:54:19 +00:00
success = true ;
2011-07-23 00:10:17 +00:00
} catch ( e ) { console . log ( e ) ; }
ok ( success , "context with circular reference did not generate an exception" ) ;
} ) ;
2011-11-08 02:33:03 +00:00
test ( "jQuery.ajax - statusText" , 3 , function ( ) {
2011-07-23 00:39:12 +00:00
stop ( ) ;
jQuery . ajax ( url ( "data/statusText.php?status=200&text=Hello" ) ) . done ( function ( _ , statusText , jqXHR ) {
strictEqual ( statusText , "success" , "callback status text ok for success" ) ;
2011-08-26 23:54:12 +00:00
ok ( jqXHR . statusText === "Hello" || jQuery . browser . safari && jqXHR . statusText === "OK" , "jqXHR status text ok for success (" + jqXHR . statusText + ")" ) ;
2011-07-23 00:39:12 +00:00
jQuery . ajax ( url ( "data/statusText.php?status=404&text=World" ) ) . fail ( function ( jqXHR , statusText ) {
strictEqual ( statusText , "error" , "callback status text ok for error" ) ;
2011-11-08 02:33:03 +00:00
// ok( jqXHR.statusText === "World" || jQuery.browser.safari && jqXHR.statusText === "Not Found", "jqXHR status text ok for error (" + jqXHR.statusText + ")" );
2011-07-23 00:39:12 +00:00
start ( ) ;
} ) ;
} ) ;
} ) ;
2011-01-13 16:01:25 +00:00
test ( "jQuery.ajax - statusCode" , function ( ) {
2011-01-20 14:39:30 +00:00
var count = 12 ;
2011-01-13 16:01:25 +00:00
2011-01-20 14:39:30 +00:00
expect ( 20 ) ;
2011-01-13 16:01:25 +00:00
stop ( ) ;
function countComplete ( ) {
if ( ! -- count ) {
start ( ) ;
}
}
function createStatusCodes ( name , isSuccess ) {
name = "Test " + name + " " + ( isSuccess ? "success" : "error" ) ;
return {
200 : function ( ) {
ok ( isSuccess , name ) ;
} ,
404 : function ( ) {
ok ( ! isSuccess , name ) ;
}
2011-01-16 01:57:39 +00:00
} ;
2011-01-13 16:01:25 +00:00
}
jQuery . each ( {
"data/name.html" : true ,
"data/someFileThatDoesNotExist.html" : false
} , function ( uri , isSuccess ) {
jQuery . ajax ( url ( uri ) , {
statusCode : createStatusCodes ( "in options" , isSuccess ) ,
complete : countComplete
} ) ;
jQuery . ajax ( url ( uri ) , {
complete : countComplete
} ) . statusCode ( createStatusCodes ( "immediately with method" , isSuccess ) ) ;
jQuery . ajax ( url ( uri ) , {
2011-02-01 15:00:30 +00:00
complete : function ( jqXHR ) {
jqXHR . statusCode ( createStatusCodes ( "on complete" , isSuccess ) ) ;
2011-01-13 16:01:25 +00:00
countComplete ( ) ;
}
} ) ;
jQuery . ajax ( url ( uri ) , {
2011-02-01 15:00:30 +00:00
complete : function ( jqXHR ) {
2011-10-01 20:49:49 +00:00
setTimeout ( function ( ) {
2011-02-01 15:00:30 +00:00
jqXHR . statusCode ( createStatusCodes ( "very late binding" , isSuccess ) ) ;
2011-01-13 16:01:25 +00:00
countComplete ( ) ;
} , 100 ) ;
}
} ) ;
jQuery . ajax ( url ( uri ) , {
statusCode : createStatusCodes ( "all (options)" , isSuccess ) ,
2011-02-01 15:00:30 +00:00
complete : function ( jqXHR ) {
jqXHR . statusCode ( createStatusCodes ( "all (on complete)" , isSuccess ) ) ;
2011-10-01 20:49:49 +00:00
setTimeout ( function ( ) {
2011-02-01 15:00:30 +00:00
jqXHR . statusCode ( createStatusCodes ( "all (very late binding)" , isSuccess ) ) ;
2011-01-13 16:01:25 +00:00
countComplete ( ) ;
} , 100 ) ;
}
} ) . statusCode ( createStatusCodes ( "all (immediately with method)" , isSuccess ) ) ;
2011-01-20 14:39:30 +00:00
var testString = "" ;
jQuery . ajax ( url ( uri ) , {
2011-02-01 15:00:30 +00:00
success : function ( a , b , jqXHR ) {
2011-01-20 14:39:30 +00:00
ok ( isSuccess , "success" ) ;
var statusCode = { } ;
2011-02-01 15:00:30 +00:00
statusCode [ jqXHR . status ] = function ( ) {
2011-01-20 14:39:30 +00:00
testString += "B" ;
} ;
2011-02-01 15:00:30 +00:00
jqXHR . statusCode ( statusCode ) ;
2011-01-20 14:39:30 +00:00
testString += "A" ;
} ,
2011-02-01 15:00:30 +00:00
error : function ( jqXHR ) {
2011-01-20 14:39:30 +00:00
ok ( ! isSuccess , "error" ) ;
var statusCode = { } ;
2011-02-01 15:00:30 +00:00
statusCode [ jqXHR . status ] = function ( ) {
2011-01-20 14:39:30 +00:00
testString += "B" ;
} ;
2011-02-01 15:00:30 +00:00
jqXHR . statusCode ( statusCode ) ;
2011-01-20 14:39:30 +00:00
testString += "A" ;
} ,
complete : function ( ) {
strictEqual ( testString , "AB" , "Test statusCode callbacks are ordered like " +
( isSuccess ? "success" : "error" ) + " callbacks" ) ;
countComplete ( ) ;
}
} ) ;
2011-01-13 16:01:25 +00:00
2011-01-20 14:39:30 +00:00
} ) ;
2011-01-13 16:01:25 +00:00
} ) ;
2011-01-21 02:58:28 +00:00
test ( "jQuery.ajax - transitive conversions" , function ( ) {
expect ( 8 ) ;
stop ( ) ;
jQuery . when (
jQuery . ajax ( url ( "data/json.php" ) , {
converters : {
2011-01-31 16:39:54 +00:00
"json myJson" : function ( data ) {
2011-01-21 02:58:28 +00:00
ok ( true , "converter called" ) ;
return data ;
}
} ,
2011-01-31 16:39:54 +00:00
dataType : "myJson" ,
2011-01-21 02:58:28 +00:00
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 : {
2011-01-31 16:39:54 +00:00
"json myJson" : function ( data ) {
2011-01-21 02:58:28 +00:00
ok ( true , "converter called (*)" ) ;
return data ;
}
} ,
contents : false , /* headers are wrong so we ignore them */
2011-01-31 16:39:54 +00:00
dataType : "* myJson" ,
2011-01-21 02:58:28 +00:00
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 (*)" ) ;
}
} )
2011-10-01 20:49:49 +00:00
) . always ( function ( ) {
start ( ) ;
} ) ;
2011-01-21 02:58:28 +00:00
} ) ;
2011-02-09 16:47:33 +00:00
test ( "jQuery.ajax - overrideMimeType" , function ( ) {
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" ) ;
}
} ) ,
jQuery . ajax ( url ( "data/json.php" ) , {
mimeType : "application/json" ,
success : function ( json ) {
ok ( json . data , "Mimetype overriden using mimeType option" ) ;
}
} )
2011-10-01 20:49:49 +00:00
) . always ( function ( ) {
start ( ) ;
} ) ;
2011-02-09 16:47:33 +00:00
} ) ;
2011-02-04 21:19:23 +00:00
test ( "jQuery.ajax - abort in prefilter" , function ( ) {
expect ( 1 ) ;
jQuery . ajaxPrefilter ( function ( options , _ , jqXHR ) {
if ( options . abortInPrefilter ) {
jqXHR . abort ( ) ;
}
} ) ;
2012-04-01 23:54:19 +00:00
jQuery . ajax ( {
2011-02-04 21:19:23 +00:00
abortInPrefilter : true ,
error : function ( ) {
ok ( false , "error callback called" ) ;
}
2012-04-01 23:54:19 +00:00
} ) . fail ( function ( _ , reason ) {
2012-04-02 00:04:46 +00:00
strictEqual ( reason , 'canceled' , "Request aborted by the prefilter must fail with 'canceled' status text" ) ;
2012-04-01 23:54:19 +00:00
} ) ;
2011-02-04 21:19:23 +00:00
} ) ;
2012-03-07 14:39:39 +00:00
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 ( ) ;
}
} ) ;
} ) ;
2012-03-07 15:54:05 +00:00
test ( "jQuery.domManip - no side effect because of ajaxSetup or global events (#11264)" , function ( ) {
expect ( 1 ) ;
jQuery . ajaxSetup ( {
type : "POST"
} ) ;
jQuery ( document ) . bind ( "ajaxStart ajaxStop" , function ( ) {
ok ( false , "Global event triggered" ) ;
} ) ;
jQuery ( "#qunit-fixture" ) . append ( "<script src='data/evalScript.php'></script>" ) ;
jQuery ( document ) . unbind ( "ajaxStart ajaxStop" ) ;
jQuery . ajaxSetup ( {
type : "GET"
} ) ;
} ) ;
2012-05-05 23:27:01 +00:00
test ( "jQuery.domManip - script in comments are properly evaluated (#11402)" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
jQuery ( "#qunit-fixture" ) . load ( "data/cleanScript.html" , function ( ) {
start ( ) ;
} ) ;
} ) ;
2011-01-19 17:44:21 +00:00
test ( "jQuery.ajax - active counter" , function ( ) {
2012-06-21 19:30:24 +00:00
ok ( jQuery . active === 0 , "ajax active counter should be zero: " + jQuery . active ) ;
2011-01-19 17:44:21 +00:00
} ) ;
2012-05-01 18:39:45 +00:00
}