2011-01-09 22:58:47 +01:00
module ( "ajax" , { teardown : moduleTeardown } ) ;
2006-11-18 14:37:01 +01:00
2007-08-22 09:10:50 +02:00
// Safari 3 randomly crashes when running these tests,
// but only in the full suite - you can run just the Ajax
// tests and they'll pass
2007-09-05 19:22:13 +02:00
//if ( !jQuery.browser.safari ) {
2007-09-04 01:45:14 +02:00
2007-09-23 17:58:49 +02:00
if ( ! isLocal ) {
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax() - success callbacks" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 8 ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2009-05-01 02:59:27 +02:00
stop ( ) ;
2010-03-02 03:24:49 +01:00
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( false , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( true , "ajaxSuccess" ) ;
} ) ;
2009-05-01 02:59:27 +02:00
2010-03-02 03:24:49 +01: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-04 01:45:14 +02:00
} ) ;
2010-12-09 19:34:28 +01:00
test ( "jQuery.ajax() - success callbacks - (url, options) syntax" , function ( ) {
expect ( 8 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
setTimeout ( function ( ) {
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( false , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( true , "ajaxSuccess" ) ;
} ) ;
jQuery . 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 ( ) {
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( false , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( true , "ajaxSuccess" ) ;
} ) ;
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
beforeSend : function ( ) { ok ( true , "beforeSend" ) ; }
} )
. 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 ( ) {
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( false , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( true , "ajaxSuccess" ) ;
} ) ;
jQuery . 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 15:52:58 +01:00
} ) ;
2010-12-09 19:34:28 +01:00
} , 13 ) ;
} ) ;
test ( "jQuery.ajax() - success callbacks (very late binding)" , function ( ) {
expect ( 8 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
setTimeout ( function ( ) {
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( false , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( true , "ajaxSuccess" ) ;
} ) ;
jQuery . 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 15:52:58 +01:00
} ) ;
2010-12-09 19:34:28 +01:00
} , 13 ) ;
} ) ;
test ( "jQuery.ajax() - success callbacks (order)" , function ( ) {
expect ( 1 ) ;
jQuery . ajaxSetup ( { timeout : 0 } ) ;
stop ( ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01: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-29 01:18:25 +02:00
test ( "jQuery.ajax() - error callbacks" , function ( ) {
2009-05-01 02:59:27 +02:00
expect ( 8 ) ;
stop ( ) ;
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( true , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( false , "ajaxSuccess" ) ;
} ) ;
jQuery . ajaxSetup ( { timeout : 500 } ) ;
jQuery . ajax ( {
url : url ( "data/name.php?wait=5" ) ,
beforeSend : function ( ) { ok ( true , "beforeSend" ) ; } ,
success : function ( ) { ok ( false , "success" ) ; } ,
error : function ( ) { ok ( true , "error" ) ; } ,
complete : function ( ) { ok ( true , "complete" ) ; }
} ) ;
2007-09-23 17:58:49 +02:00
} ) ;
2007-09-04 01:45:14 +02:00
2011-02-01 09:30:52 +01:00
test ( "jQuery.ajax - multiple method signatures introduced in 1.5 ( #8107)" , function ( ) {
expect ( 4 ) ;
stop ( ) ;
jQuery . when (
jQuery . ajax ( ) . success ( function ( ) { ok ( true , 'With no arguments' ) ; } ) ,
jQuery . ajax ( 'data/name.html' ) . success ( function ( ) { ok ( true , 'With only string URL argument' ) ; } ) ,
jQuery . ajax ( 'data/name.html' , { } ) . success ( function ( ) { ok ( true , 'With string URL param and map' ) ; } ) ,
jQuery . ajax ( { url : 'data/name.html' } ) . success ( function ( ) { ok ( true , 'With only map' ) ; } )
) . then ( start , start ) ;
} ) ;
2011-01-25 16:08:19 +01:00
test ( "jQuery.ajax() - textStatus and errorThrown values" , function ( ) {
2011-01-31 11:14:38 +01:00
var nb = 2 ;
2011-01-25 16:08:19 +01:00
expect ( 2 * nb ) ;
stop ( ) ;
function startN ( ) {
if ( ! ( -- nb ) ) {
start ( ) ;
}
}
2011-01-31 11:14:38 +01: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 16:08:19 +01: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 11:14:38 +01:00
* /
2011-01-25 16:08:19 +01: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 04:53:29 +01:00
test ( "jQuery.ajax() - responseText on error" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/errorWithText.php" ) ,
error : function ( xhr ) {
2011-02-01 16:00:30 +01:00
strictEqual ( xhr . responseText , "plain text message" , "Test jqXHR.responseText is filled for HTTP errors" ) ;
2011-01-09 04:53:29 +01:00
} ,
complete : function ( ) {
start ( ) ;
}
} ) ;
} ) ;
2011-01-09 06:19:27 +01:00
test ( ".ajax() - retry with jQuery.ajax( this )" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
var firstTime = 1 ;
jQuery . ajax ( {
url : url ( "data/errorWithText.php" ) ,
error : function ( ) {
if ( firstTime ) {
firstTime = 0 ;
jQuery . ajax ( this ) ;
} else {
ok ( true , "Test retrying with jQuery.ajax(this) works" ) ;
start ( ) ;
}
}
2011-01-11 23:43:02 +01:00
} ) ;
2011-01-09 06:19:27 +01:00
} ) ;
2010-12-09 19:34:28 +01:00
test ( ".ajax() - headers" , function ( ) {
2010-12-11 02:41:39 +01:00
expect ( 2 ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01:00
stop ( ) ;
2010-12-30 07:34:48 +01:00
2011-02-07 16:35:32 +01:00
jQuery ( '#foo' ) . ajaxSend ( function ( evt , xhr ) {
xhr . setRequestHeader ( "ajax-send" , "test" ) ;
} ) ;
2010-12-10 02:45:08 +01:00
var requestHeaders = {
2011-02-07 16:35:32 +01:00
siMPle : "value" ,
"SometHing-elsE" : "other value" ,
OthEr : "something else"
2010-12-10 02:45:08 +01:00
} ,
list = [ ] ,
2010-12-11 02:41:39 +01:00
i ;
2010-12-30 07:34:48 +01:00
2010-12-10 02:45:08 +01:00
for ( i in requestHeaders ) {
2010-12-11 02:21:54 +01:00
list . push ( i ) ;
2010-12-10 02:45:08 +01:00
}
2011-02-07 16:35:32 +01:00
list . push ( "ajax-send" ) ;
2010-12-30 07:34:48 +01:00
2010-12-11 02:41:39 +01:00
jQuery . ajax ( url ( "data/headers.php?keys=" + list . join ( "_" ) ) , {
2011-02-07 16:35:32 +01:00
2010-12-10 02:45:08 +01:00
headers : requestHeaders ,
2010-12-11 02:41:39 +01:00
success : function ( data , _ , xhr ) {
2010-12-10 02:45:08 +01:00
var tmp = [ ] ;
for ( i in requestHeaders ) {
2010-12-11 02:21:54 +01:00
tmp . push ( i , ": " , requestHeaders [ i ] , "\n" ) ;
2010-12-10 02:45:08 +01:00
}
2011-02-07 16:35:32 +01:00
tmp . push ( "ajax-send: test\n" ) ;
2010-12-10 02:45:08 +01:00
tmp = tmp . join ( "" ) ;
2010-12-30 07:34:48 +01:00
2010-12-10 02:45:08 +01:00
equals ( data , tmp , "Headers were sent" ) ;
2010-12-11 02:41:39 +01:00
equals ( xhr . getResponseHeader ( "Sample-Header" ) , "Hello World" , "Sample header received" ) ;
2010-12-09 19:34:28 +01:00
} ,
error : function ( ) { ok ( false , "error" ) ; }
2011-02-07 16:35:32 +01:00
} ) . then ( start , start ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01:00
} ) ;
2011-01-11 23:01:18 +01: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 04:28:42 +01: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 01:36:05 +01:00
test ( ".ajax() - protocol-less urls" , function ( ) {
expect ( 1 ) ;
jQuery . ajax ( {
url : "//somedomain.com" ,
beforeSend : function ( xhr , settings ) {
equals ( settings . url , location . protocol + "//somedomain.com" , "Make sure that the protocol is added." ) ;
return false ;
}
} ) ;
} ) ;
2010-09-22 18:52:44 +02:00
test ( ".ajax() - hash" , function ( ) {
expect ( 3 ) ;
2010-12-30 07:34:48 +01:00
2010-09-22 18:52:44 +02:00
jQuery . ajax ( {
url : "data/name.html#foo" ,
beforeSend : function ( xhr , settings ) {
equals ( settings . url , "data/name.html" , "Make sure that the URL is trimmed." ) ;
return false ;
}
} ) ;
2010-12-30 07:34:48 +01:00
2010-09-22 18:52:44 +02:00
jQuery . ajax ( {
url : "data/name.html?abc#foo" ,
beforeSend : function ( xhr , settings ) {
2010-12-09 19:34:28 +01:00
equals ( settings . url , "data/name.html?abc" , "Make sure that the URL is trimmed." ) ;
2010-09-22 18:52:44 +02:00
return false ;
}
} ) ;
2010-12-30 07:34:48 +01:00
2010-09-22 18:52:44 +02:00
jQuery . ajax ( {
url : "data/name.html?abc#foo" ,
data : { "test" : 123 } ,
beforeSend : function ( xhr , settings ) {
equals ( settings . url , "data/name.html?abc&test=123" , "Make sure that the URL is trimmed." ) ;
return false ;
}
} ) ;
} ) ;
2011-01-09 06:01:00 +01:00
test ( "jQuery ajax - cross-domain detection" , function ( ) {
2011-01-09 16:50:13 +01:00
expect ( 4 ) ;
2011-01-09 06:01:00 +01:00
var loc = document . location ,
otherPort = loc . port === 666 ? 667 : 666 ,
2011-01-09 17:27:29 +01:00
otherProtocol = loc . protocol === "http:" ? "https:" : "http:" ;
2011-01-09 06:01:00 +01:00
2011-01-09 17:27:29 +01:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 06:01:00 +01:00
url : otherProtocol + "//" + loc . host ,
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test different protocols are detected as cross-domain" ) ;
return false ;
}
2011-01-09 17:27:29 +01:00
} ) ;
2011-01-09 06:01:00 +01:00
2011-01-09 17:27:29 +01:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 06:01:00 +01:00
url : loc . protocol + '//somewebsitethatdoesnotexist-656329477541.com:' + ( loc . port || 80 ) ,
beforeSend : function ( _ , s ) {
ok ( s . crossDomain , "Test different hostnames are detected as cross-domain" ) ;
return false ;
}
2011-01-09 17:27:29 +01:00
} ) ;
2011-01-09 06:01:00 +01:00
2011-01-09 17:27:29 +01:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 06:01:00 +01: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 17:27:29 +01:00
} ) ;
2011-01-09 06:01:00 +01:00
2011-01-09 17:27:29 +01:00
jQuery . ajax ( {
dataType : "jsonp" ,
2011-01-09 16:50:13 +01: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 17:27:29 +01:00
} ) ;
2011-01-09 16:50:13 +01:00
2011-01-09 06:01:00 +01:00
} ) ;
2011-02-05 03:06:21 +01:00
test ( ".load() - 404 error callbacks" , function ( ) {
2010-01-25 03:58:32 +01:00
expect ( 6 ) ;
stop ( ) ;
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( true , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( false , "ajaxSuccess" ) ;
} ) ;
jQuery ( "<div/>" ) . load ( "data/404.html" , function ( ) {
ok ( true , "complete" ) ;
} ) ;
} ) ;
2010-01-06 18:13:56 +01:00
test ( "jQuery.ajax() - abort" , function ( ) {
2010-11-06 19:52:30 +01:00
expect ( 8 ) ;
2010-01-06 18:13:56 +01:00
stop ( ) ;
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
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" ) ; }
} ) ;
2010-11-06 19:52:30 +01:00
equals ( xhr . readyState , 1 , "XHR readyState indicates successful dispatch" ) ;
2010-01-06 18:13:56 +01:00
xhr . abort ( ) ;
2010-11-06 19:52:30 +01:00
equals ( xhr . readyState , 0 , "XHR readyState indicates successful abortion" ) ;
2010-01-06 18:13:56 +01:00
} ) ;
2009-09-15 17:19:58 +02:00
test ( "Ajax events with context" , function ( ) {
2010-01-16 16:11:01 +01:00
expect ( 14 ) ;
2010-12-30 07:34:48 +01:00
2009-09-15 17:19:58 +02:00
stop ( ) ;
2009-11-17 20:36:10 +01:00
var context = document . createElement ( "div" ) ;
2010-12-30 07:34:48 +01:00
2009-09-15 17:19:58 +02:00
function event ( e ) {
equals ( this , context , e . type ) ;
}
2010-01-16 16:11:01 +01:00
function callback ( msg ) {
return function ( ) {
equals ( this , context , "context is preserved on callback " + msg ) ;
} ;
}
function nocallback ( msg ) {
return function ( ) {
equals ( typeof this . url , "string" , "context is settings on callback " + msg ) ;
} ;
2009-09-15 17:19:58 +02:00
}
2010-12-30 07:34:48 +01:00
2009-09-15 17:19:58 +02:00
jQuery ( '#foo' ) . add ( context )
. ajaxSend ( event )
. ajaxComplete ( event )
. ajaxError ( event )
. ajaxSuccess ( event ) ;
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
2010-01-16 16:11:01 +01:00
beforeSend : callback ( "beforeSend" ) ,
success : callback ( "success" ) ,
error : callback ( "error" ) ,
2009-09-15 17:19:58 +02:00
complete : function ( ) {
2010-01-16 16:11:01 +01: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 ) ;
jQuery ( '#foo' ) . add ( context ) . unbind ( ) ;
jQuery . ajax ( {
url : url ( "data/404.html" ) ,
beforeSend : nocallback ( "beforeSend" ) ,
error : nocallback ( "error" ) ,
complete : function ( ) {
nocallback ( "complete" ) . call ( this ) ;
start ( ) ;
}
} ) ;
}
} ) ;
2009-09-15 17:19:58 +02:00
} ,
context : context
} ) ;
} ) ;
2010-01-25 07:08:24 +01:00
test ( "jQuery.ajax context modification" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2011-01-07 15:52:58 +01:00
var obj = { } ;
2010-01-25 07:08:24 +01:00
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
context : obj ,
beforeSend : function ( ) {
this . test = "foo" ;
} ,
complete : function ( ) {
start ( ) ;
}
} ) ;
equals ( obj . test , "foo" , "Make sure the original object is maintained." ) ;
} ) ;
2011-01-20 04:12:15 +01: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-29 01:18:25 +02:00
test ( "jQuery.ajax() - disabled globals" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 3 ) ;
stop ( ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
2007-09-04 01:45:14 +02: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 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-09-04 01:45:14 +02: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 ( ) {
ok ( true , "complete" ) ;
setTimeout ( function ( ) { start ( ) ; } , 13 ) ;
2009-05-01 02:59:27 +02:00
}
2007-09-04 01:45:14 +02:00
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax - xml: non-namespace elements inside namespaced elements" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 3 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
url : url ( "data/with_fries.xml" ) ,
dataType : "xml" ,
success : function ( resp ) {
2009-05-01 02:59:27 +02:00
equals ( jQuery ( "properties" , resp ) . length , 1 , 'properties in responseXML' ) ;
equals ( jQuery ( "jsconf" , resp ) . length , 1 , 'jsconf in responseXML' ) ;
equals ( jQuery ( "thing" , resp ) . length , 2 , 'things in responseXML' ) ;
start ( ) ;
2007-09-04 01:45:14 +02:00
}
} ) ;
} ) ;
2010-12-09 19:34:28 +01:00
test ( "jQuery.ajax - xml: non-namespace elements inside namespaced elements (over JSONP)" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/with_fries_over_jsonp.php" ) ,
dataType : "jsonp xml" ,
success : function ( resp ) {
equals ( jQuery ( "properties" , resp ) . length , 1 , 'properties in responseXML' ) ;
equals ( jQuery ( "jsconf" , resp ) . length , 1 , 'jsconf in responseXML' ) ;
equals ( jQuery ( "thing" , resp ) . length , 2 , 'things in responseXML' ) ;
start ( ) ;
2010-12-24 18:02:45 +01:00
} ,
error : function ( _1 , _2 , error ) {
ok ( false , error ) ;
start ( ) ;
2010-12-09 19:34:28 +01:00
}
} ) ;
} ) ;
2010-10-23 19:23:51 +02: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 ( ) ;
ok ( /Date/i . test ( h ) , 'No Date in HEAD response' ) ;
2010-12-30 07:34:48 +01:00
2010-10-23 19:23:51 +02:00
jQuery . ajax ( {
url : url ( "data/name.html" ) ,
data : { whip _it : "good" } ,
type : "HEAD" ,
success : function ( data , status , xhr ) {
var h = xhr . getAllResponseHeaders ( ) ;
ok ( /Date/i . test ( h ) , 'No Date in HEAD response with data' ) ;
start ( ) ;
}
} ) ;
}
} ) ;
2010-12-09 19:34:28 +01:00
2010-10-23 19:23:51 +02:00
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax - beforeSend" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 1 ) ;
stop ( ) ;
2009-05-01 02:59:27 +02:00
2007-09-04 01:45:14 +02:00
var check = false ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2009-05-01 02:59:27 +02:00
url : url ( "data/name.html" ) ,
2007-09-04 01:45:14 +02:00
beforeSend : function ( xml ) {
check = true ;
} ,
success : function ( data ) {
ok ( check , "check beforeSend was executed" ) ;
start ( ) ;
}
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax - beforeSend, cancel request (#2688)" , function ( ) {
2008-04-23 00:07:17 +02:00
expect ( 2 ) ;
2008-05-29 01:18:25 +02:00
var request = jQuery . ajax ( {
2009-05-01 02:59:27 +02:00
url : url ( "data/name.html" ) ,
2008-04-23 00:07:17 +02: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" ) ;
}
} ) ;
ok ( request === false , "canceled request must return false instead of XMLHttpRequest instance" ) ;
} ) ;
2010-12-09 19:34:28 +01:00
test ( "jQuery.ajax - beforeSend, cancel request manually" , function ( ) {
expect ( 2 ) ;
var request = jQuery . ajax ( {
url : url ( "data/name.html" ) ,
beforeSend : function ( xhr ) {
ok ( true , "beforeSend got called, canceling" ) ;
xhr . abort ( ) ;
} ,
success : function ( ) {
ok ( false , "request didn't get canceled" ) ;
} ,
complete : function ( ) {
ok ( false , "request didn't get canceled" ) ;
} ,
error : function ( ) {
ok ( false , "request didn't get canceled" ) ;
}
} ) ;
ok ( request === false , "canceled request must return false instead of XMLHttpRequest instance" ) ;
} ) ;
2009-01-12 02:12:58 +01:00
window . foobar = null ;
window . testFoo = undefined ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax - dataType html" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 5 ) ;
stop ( ) ;
2009-05-01 02:59:27 +02:00
2007-09-04 01:45:14 +02:00
var verifyEvaluation = function ( ) {
2009-01-10 01:16:48 +01:00
equals ( testFoo , "foo" , 'Check if script was evaluated for datatype html' ) ;
equals ( foobar , "bar" , 'Check if script src was evaluated for datatype html' ) ;
2009-05-01 02:59:27 +02:00
2009-01-10 01:16:48 +01:00
start ( ) ;
2007-09-04 01:45:14 +02:00
} ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
dataType : "html" ,
url : url ( "data/test.html" ) ,
success : function ( data ) {
2009-05-01 02:59:27 +02:00
jQuery ( "#ap" ) . html ( data ) ;
ok ( data . match ( /^html text/ ) , 'Check content for datatype html' ) ;
setTimeout ( verifyEvaluation , 600 ) ;
2007-09-04 01:45:14 +02:00
}
} ) ;
} ) ;
2007-08-20 01:37:26 +02:00
2006-11-30 21:52:24 +01:00
test ( "serialize()" , function ( ) {
2009-08-26 18:29:46 +02:00
expect ( 5 ) ;
2009-05-01 02:59:27 +02:00
2009-12-17 03:02:58 +01:00
// Add html5 elements only for serialize because selector can't yet find them on non-html5 browsers
jQuery ( "#search" ) . after (
'<input type="email" id="html5email" name="email" value="dave@jquery.com" />' +
'<input type="number" id="html5number" name="number" value="43" />'
) ;
2008-05-29 01:18:25 +02:00
equals ( jQuery ( '#form' ) . serialize ( ) ,
2010-10-01 00:40:30 +02: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" ,
2007-09-05 19:06:05 +02:00
'Check form serialization as query string' ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
equals ( jQuery ( '#form :input' ) . serialize ( ) ,
2010-10-01 00:40:30 +02: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" ,
2007-09-05 19:06:05 +02:00
'Check input serialization as query string' ) ;
2009-05-01 02:59:27 +02:00
equals ( jQuery ( '#testForm' ) . serialize ( ) ,
2010-12-31 20:56:51 +01:00
'T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=' ,
2007-08-20 01:37:26 +02:00
'Check form serialization as query string' ) ;
2009-05-01 02:59:27 +02:00
equals ( jQuery ( '#testForm :input' ) . serialize ( ) ,
2010-12-31 20:56:51 +01:00
'T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=' ,
2007-09-05 19:06:05 +02:00
'Check input serialization as query string' ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
equals ( jQuery ( '#form, #testForm' ) . serialize ( ) ,
2010-12-31 20:56:51 +01: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=" ,
2007-09-05 19:06:05 +02:00
'Multiple form serialization as query string' ) ;
2009-05-01 02:59:27 +02:00
2009-08-26 18:29:46 +02: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 .
2008-05-29 01:18:25 +02:00
equals ( jQuery ( '#form, #testForm :input' ) . serialize ( ) ,
2010-12-31 20:56:51 +01: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=" ,
2007-09-05 19:06:05 +02:00
'Mixed form/input serialization as query string' ) ;
2009-08-26 18:29:46 +02:00
* /
2009-12-17 03:02:58 +01:00
jQuery ( "#html5email, #html5number" ) . remove ( ) ;
2006-11-30 21:52:24 +01:00
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.param()" , function ( ) {
2011-02-02 00:32:29 +01:00
expect ( 25 ) ;
2010-12-30 07:34:48 +01:00
2010-02-06 01:43:31 +01:00
equals ( ! jQuery . ajaxSettings . traditional , true , "traditional flag, falsy by default" ) ;
2010-12-30 07:34:48 +01:00
2009-09-18 00:37:19 +02:00
var params = { foo : "bar" , baz : 42 , quux : "All your base are belong to us" } ;
equals ( jQuery . param ( params ) , "foo=bar&baz=42&quux=All+your+base+are+belong+to+us" , "simple" ) ;
params = { someName : [ 1 , 2 , 3 ] , regularThing : "blah" } ;
equals ( jQuery . param ( params ) , "someName%5B%5D=1&someName%5B%5D=2&someName%5B%5D=3®ularThing=blah" , "with array" ) ;
params = { foo : [ 'a' , 'b' , 'c' ] } ;
equals ( jQuery . param ( params ) , "foo%5B%5D=a&foo%5B%5D=b&foo%5B%5D=c" , "with array of strings" ) ;
params = { foo : [ "baz" , 42 , "All your base are belong to us" ] } ;
equals ( jQuery . param ( params ) , "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=All+your+base+are+belong+to+us" , "more array" ) ;
params = { foo : { bar : 'baz' , beep : 42 , quux : 'All your base are belong to us' } } ;
equals ( 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 07:34:48 +01:00
2009-09-18 00:37:19 +02: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?" } ;
2009-12-16 04:54:12 +01:00
equals ( 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]=undefined&i[]=10&i[]=11&j=true&k=false&l[]=undefined&l[]=0&m=cowboy+hat?" , "huge structure" ) ;
2010-12-30 07:34:48 +01:00
2009-12-16 04:54:12 +01: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 ] } ;
equals ( 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 07:34:48 +01:00
2009-12-22 14:09:56 +01: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?" } ;
equals ( jQuery . param ( params , true ) , "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=undefined&l=0&m=cowboy+hat%3F" , "huge structure, forced traditional" ) ;
2010-02-06 01:43:31 +01:00
2010-02-06 03:43:10 +01:00
equals ( 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 22:57:25 +02:00
// Make sure empty arrays and objects are handled #6481
equals ( jQuery . param ( { "foo" : { "bar" : [ ] } } ) , "foo%5Bbar%5D=" , "Empty array param" ) ;
equals ( jQuery . param ( { "foo" : { "bar" : [ ] , foo : 1 } } ) , "foo%5Bbar%5D=&foo%5Bfoo%5D=1" , "Empty array param" ) ;
equals ( jQuery . param ( { "foo" : { "bar" : { } } } ) , "foo%5Bbar%5D=" , "Empty object param" ) ;
2010-12-09 19:34:28 +01:00
2011-02-02 00:32:29 +01:00
// #7945
equals ( jQuery . param ( { "jquery" : "1.4.2" } ) , "jquery=1.4.2" , "Check that object with a jQuery property get serialized correctly" ) ;
equals ( jQuery . param ( jQuery ( "#form :input" ) ) , "action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo%5Bbar%5D=&name=name&search=search&button=&=foobar&select1=&select2=3&select3=1&select4=1&select5=3" , "Make sure jQuery objects are properly serialized" ) ;
2009-12-22 14:09:56 +01:00
jQuery . ajaxSetup ( { traditional : true } ) ;
2010-12-30 07:34:48 +01:00
2006-11-30 21:52:24 +01:00
var params = { foo : "bar" , baz : 42 , quux : "All your base are belong to us" } ;
2008-05-29 01:18:25 +02:00
equals ( jQuery . param ( params ) , "foo=bar&baz=42&quux=All+your+base+are+belong+to+us" , "simple" ) ;
2009-05-01 02:59:27 +02:00
2006-11-30 21:52:24 +01:00
params = { someName : [ 1 , 2 , 3 ] , regularThing : "blah" } ;
2008-05-29 01:18:25 +02:00
equals ( jQuery . param ( params ) , "someName=1&someName=2&someName=3®ularThing=blah" , "with array" ) ;
2009-05-01 02:59:27 +02:00
2009-09-02 07:16:21 +02:00
params = { foo : [ 'a' , 'b' , 'c' ] } ;
equals ( jQuery . param ( params ) , "foo=a&foo=b&foo=c" , "with array of strings" ) ;
2006-11-30 21:52:24 +01:00
params = { "foo[]" : [ "baz" , 42 , "All your base are belong to us" ] } ;
2008-05-29 01:18:25 +02:00
equals ( 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 02:59:27 +02:00
2006-11-30 21:52:24 +01:00
params = { "foo[bar]" : "baz" , "foo[beep]" : 42 , "foo[quux]" : "All your base are belong to us" } ;
2008-05-29 01:18:25 +02:00
equals ( 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 07:34:48 +01:00
2009-09-18 00:37:19 +02: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?" } ;
equals ( jQuery . param ( params ) , "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=undefined&l=0&m=cowboy+hat%3F" , "huge structure" ) ;
2010-12-30 07:34:48 +01:00
2009-12-16 04:54:12 +01: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 ] } ;
equals ( 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 07:34:48 +01:00
2009-12-22 14:09:56 +01: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?" } ;
equals ( 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]=undefined&i[]=10&i[]=11&j=true&k=false&l[]=undefined&l[]=0&m=cowboy+hat?" , "huge structure, forced not traditional" ) ;
2010-12-30 07:34:48 +01:00
2010-01-13 15:29:01 +01:00
params = { param1 : null } ;
equals ( jQuery . param ( params , false ) , "param1=null" , "Make sure that null params aren't traversed." ) ;
2011-01-31 15:58:27 +01:00
params = { 'test' : { 'length' : 3 , 'foo' : 'bar' } } ;
equals ( jQuery . param ( params , false ) , "test%5Blength%5D=3&test%5Bfoo%5D=bar" , "Sub-object with a length property" ) ;
2007-07-09 05:08:20 +02:00
} ) ;
test ( "synchronous request" , function ( ) {
2007-08-20 01:37:26 +02:00
expect ( 1 ) ;
2010-01-07 18:21:58 +01:00
ok ( /^{ "data"/ . test ( jQuery . ajax ( { url : url ( "data/json_obj.js" ) , dataType : "text" , async : false } ) . responseText ) , "check returned text" ) ;
2007-07-09 05:08:20 +02:00
} ) ;
test ( "synchronous request with callbacks" , function ( ) {
expect ( 2 ) ;
var result ;
2010-01-07 18:21:58 +01:00
jQuery . ajax ( { url : url ( "data/json_obj.js" ) , async : false , dataType : "text" , success : function ( data ) { ok ( true , "sucess callback executed" ) ; result = data ; } } ) ;
2007-07-09 05:08:20 +02:00
ok ( /^{ "data"/ . test ( result ) , "check returned text" ) ;
} ) ;
2006-12-15 10:13:24 +01:00
test ( "pass-through request object" , function ( ) {
2007-12-06 00:03:58 +01:00
expect ( 8 ) ;
2008-10-24 16:40:58 +02:00
stop ( ) ;
2009-05-01 02:59:27 +02:00
2007-08-20 01:37:26 +02:00
var target = "data/name.html" ;
2007-12-06 00:03:58 +01:00
var successCount = 0 ;
var errorCount = 0 ;
2009-01-10 01:16:48 +01:00
var errorEx = "" ;
2006-12-15 10:13:24 +01:00
var success = function ( ) {
2007-12-06 00:03:58 +01:00
successCount ++ ;
2007-08-20 01:37:26 +02:00
} ;
2008-05-29 01:18:25 +02:00
jQuery ( "#foo" ) . ajaxError ( function ( e , xml , s , ex ) {
2007-12-06 00:03:58 +01:00
errorCount ++ ;
2009-01-10 01:16:48 +01:00
errorEx += ": " + xml . status ;
2007-12-06 00:03:58 +01:00
} ) ;
2008-05-29 01:18:25 +02:00
jQuery ( "#foo" ) . one ( 'ajaxStop' , function ( ) {
2007-12-06 00:03:58 +01:00
equals ( successCount , 5 , "Check all ajax calls successful" ) ;
equals ( errorCount , 0 , "Check no ajax errors (status" + errorEx + ")" ) ;
2008-05-29 01:18:25 +02:00
jQuery ( "#foo" ) . unbind ( 'ajaxError' ) ;
2009-05-01 02:59:27 +02:00
2007-12-06 00:03:58 +01:00
start ( ) ;
} ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02: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 10:13:24 +01:00
} ) ;
2007-12-04 05:43:45 +01:00
test ( "ajax cache" , function ( ) {
expect ( 18 ) ;
2010-12-30 07:34:48 +01:00
2007-12-04 05:43:45 +01:00
stop ( ) ;
2009-05-01 02:59:27 +02:00
2007-12-04 05:43:45 +01:00
var count = 0 ;
2008-05-29 01:18:25 +02:00
jQuery ( "#firstp" ) . bind ( "ajaxSuccess" , function ( e , xml , s ) {
2007-12-04 05:43:45 +01:00
var re = /_=(.*?)(&|$)/g ;
2009-09-15 17:19:58 +02:00
var oldOne = null ;
2007-12-04 05:43:45 +01:00
for ( var i = 0 ; i < 6 ; i ++ ) {
2009-09-15 17:19:58 +02:00
var ret = re . exec ( s . url ) ;
2007-12-04 05:43:45 +01:00
if ( ! ret ) {
break ;
}
2009-09-15 17:19:58 +02:00
oldOne = ret [ 1 ] ;
2007-12-04 05:43:45 +01:00
}
equals ( i , 1 , "Test to make sure only one 'no-cache' parameter is there" ) ;
ok ( oldOne != "tobereplaced555" , "Test to be sure parameter (if it was there) was replaced" ) ;
if ( ++ count == 6 )
start ( ) ;
} ) ;
2008-05-29 01:18:25 +02: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 05:43:45 +01:00
} ) ;
2009-11-07 16:08:07 +01:00
/ *
* Test disabled .
* The assertions expect that the passed - in object will be modified ,
* which shouldn ' t be the case . Fixes # 5439.
2007-08-20 01:37:26 +02:00
test ( "global ajaxSettings" , function ( ) {
2008-05-07 03:16:54 +02:00
expect ( 2 ) ;
2007-08-20 01:37:26 +02:00
var tmp = jQuery . extend ( { } , jQuery . ajaxSettings ) ;
2009-05-01 02:59:27 +02:00
var orig = { url : "data/with_fries.xml" } ;
2007-08-20 01:37:26 +02:00
var t ;
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { data : { foo : 'bar' , bar : 'BAR' } } ) ;
2007-08-20 01:37:26 +02:00
2009-05-01 02:59:27 +02:00
t = jQuery . extend ( { } , orig ) ;
2007-08-20 01:37:26 +02:00
t . data = { } ;
2009-05-01 02:59:27 +02:00
jQuery . ajax ( t ) ;
2007-08-20 01:37:26 +02:00
ok ( t . url . indexOf ( 'foo' ) > - 1 && t . url . indexOf ( 'bar' ) > - 1 , "Check extending {}" ) ;
2009-05-01 02:59:27 +02:00
t = jQuery . extend ( { } , orig ) ;
2007-08-20 01:37:26 +02:00
t . data = { zoo : 'a' , ping : 'b' } ;
2009-05-01 02:59:27 +02:00
jQuery . ajax ( t ) ;
2007-08-20 01:37:26 +02: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 02:59:27 +02:00
2007-08-20 01:37:26 +02:00
jQuery . ajaxSettings = tmp ;
} ) ;
2009-11-07 16:08:07 +01:00
* /
2007-08-20 01:37:26 +02:00
test ( "load(String)" , function ( ) {
expect ( 1 ) ;
2008-10-24 16:40:58 +02:00
stop ( ) ; // check if load can be called with only url
2008-05-29 01:18:25 +02:00
jQuery ( '#first' ) . load ( "data/name.html" , start ) ;
2007-08-20 01:37:26 +02:00
} ) ;
2007-08-25 05:55:12 +02:00
test ( "load('url selector')" , function ( ) {
expect ( 1 ) ;
2008-10-24 16:40:58 +02:00
stop ( ) ; // check if load can be called with only url
2008-05-29 01:18:25 +02:00
jQuery ( '#first' ) . load ( "data/test3.html div.user" , function ( ) {
equals ( jQuery ( this ) . children ( "div" ) . length , 2 , "Verify that specific elements were injected" ) ;
2007-08-25 05:55:12 +02:00
start ( ) ;
} ) ;
} ) ;
2007-12-14 18:06:41 +01:00
test ( "load(String, Function) with ajaxSetup on dataType json, see #2046" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { dataType : "json" } ) ;
jQuery ( "#first" ) . ajaxComplete ( function ( e , xml , s ) {
2007-12-14 18:06:41 +01:00
equals ( s . dataType , "html" , "Verify the load() dataType was html" ) ;
2008-05-29 01:18:25 +02:00
jQuery ( "#first" ) . unbind ( "ajaxComplete" ) ;
jQuery . ajaxSetup ( { dataType : "" } ) ;
2007-12-14 18:06:41 +01:00
start ( ) ;
} ) ;
2008-05-29 01:18:25 +02:00
jQuery ( '#first' ) . load ( "data/test3.html" ) ;
2007-12-14 18:06:41 +01:00
} ) ;
2007-08-20 01:37:26 +02:00
test ( "load(String, Function) - simple: inject text into DOM" , function ( ) {
2006-11-21 10:55:34 +01:00
expect ( 2 ) ;
2006-11-18 14:37:01 +01:00
stop ( ) ;
2008-05-29 01:18:25 +02: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 14:37:01 +01:00
start ( ) ;
} ) ;
} ) ;
2007-08-20 01:37:26 +02:00
test ( "load(String, Function) - check scripts" , function ( ) {
2006-11-21 10:55:34 +01:00
expect ( 7 ) ;
2006-11-18 14:37:01 +01:00
stop ( ) ;
2009-05-01 02:59:27 +02:00
2006-11-18 14:37:01 +01:00
var verifyEvaluation = function ( ) {
2009-01-10 01:16:48 +01:00
equals ( foobar , "bar" , 'Check if script src was evaluated after load' ) ;
2008-05-29 01:18:25 +02:00
equals ( jQuery ( '#ap' ) . html ( ) , 'bar' , 'Check if script evaluation has modified DOM' ) ;
2009-05-01 02:59:27 +02:00
2009-01-10 00:49:18 +01:00
start ( ) ;
2006-11-18 14:37:01 +01:00
} ;
2008-05-29 01:18:25 +02:00
jQuery ( '#first' ) . load ( url ( 'data/test.html' ) , function ( ) {
ok ( jQuery ( '#first' ) . html ( ) . match ( /^html text/ ) , 'Check content after loading html' ) ;
equals ( jQuery ( '#foo' ) . html ( ) , 'foo' , 'Check if script evaluation has modified DOM' ) ;
2009-01-10 01:16:48 +01:00
equals ( testFoo , "foo" , 'Check if script was evaluated after load' ) ;
2007-12-14 18:06:41 +01:00
setTimeout ( verifyEvaluation , 600 ) ;
2006-11-18 14:37:01 +01:00
} ) ;
} ) ;
2007-08-20 01:37:26 +02:00
test ( "load(String, Function) - check file with only a script tag" , function ( ) {
2006-12-31 16:44:59 +01:00
expect ( 3 ) ;
stop ( ) ;
2009-01-12 02:12:58 +01:00
2008-05-29 01:18:25 +02:00
jQuery ( '#first' ) . load ( url ( 'data/test2.html' ) , function ( ) {
equals ( jQuery ( '#foo' ) . html ( ) , 'foo' , 'Check if script evaluation has modified DOM' ) ;
2009-01-10 01:16:48 +01:00
equals ( testFoo , "foo" , 'Check if script was evaluated after load' ) ;
2009-05-01 02:59:27 +02:00
2007-12-14 18:06:41 +01:00
start ( ) ;
2006-12-31 16:44:59 +01:00
} ) ;
} ) ;
2011-01-11 20:02:33 +01: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-28 00:46:28 +02:00
test ( "load(String, Object, Function)" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery ( '<div />' ) . load ( url ( 'data/params_html.php' ) , { foo : 3 , bar : 'ok' } , function ( ) {
2009-05-01 02:59:27 +02:00
var $post = jQuery ( this ) . find ( '#post' ) ;
2008-05-28 00:46:28 +02:00
equals ( $post . find ( '#foo' ) . text ( ) , '3' , 'Check if a hash of data is passed correctly' ) ;
equals ( $post . find ( '#bar' ) . text ( ) , 'ok' , 'Check if a hash of data is passed correctly' ) ;
start ( ) ;
} ) ;
} ) ;
test ( "load(String, String, Function)" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery ( '<div />' ) . load ( url ( 'data/params_html.php' ) , 'foo=3&bar=ok' , function ( ) {
2009-05-01 02:59:27 +02:00
var $get = jQuery ( this ) . find ( '#get' ) ;
2008-05-28 00:46:28 +02:00
equals ( $get . find ( '#foo' ) . text ( ) , '3' , 'Check if a string of data is passed correctly' ) ;
2009-05-01 02:59:27 +02:00
equals ( $get . find ( '#bar' ) . text ( ) , 'ok' , 'Check if a of data is passed correctly' ) ;
2008-05-28 00:46:28 +02:00
start ( ) ;
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.get(String, Hash, Function) - parse xml and use text() on nodes" , function ( ) {
2007-08-20 01:37:26 +02:00
expect ( 2 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . get ( url ( 'data/dashboard.xml' ) , function ( xml ) {
2007-08-20 01:37:26 +02:00
var content = [ ] ;
2008-05-29 01:18:25 +02:00
jQuery ( 'tab' , xml ) . each ( function ( ) {
content . push ( jQuery ( this ) . text ( ) ) ;
2007-08-20 01:37:26 +02:00
} ) ;
equals ( content [ 0 ] , 'blabla' , 'Check first tab' ) ;
equals ( content [ 1 ] , 'blublu' , 'Check second tab' ) ;
start ( ) ;
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.getScript(String, Function) - with callback" , function ( ) {
2011-01-29 01:39:22 +01:00
expect ( 3 ) ;
2007-08-20 01:37:26 +02:00
stop ( ) ;
2011-02-01 16:00:30 +01:00
jQuery . getScript ( url ( "data/test.js" ) , function ( data , _ , jqXHR ) {
2009-01-10 01:16:48 +01:00
equals ( foobar , "bar" , 'Check if script was evaluated' ) ;
2011-02-01 16:00:30 +01:00
strictEqual ( data , jqXHR . responseText , "Same-domain script requests returns the source of the script (#8082)" ) ;
2011-01-29 03:08:18 +01:00
setTimeout ( start , 100 ) ;
2007-08-20 01:37:26 +02:00
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.getScript(String, Function) - no callback" , function ( ) {
2007-08-20 01:37:26 +02:00
expect ( 1 ) ;
2008-10-24 16:40:58 +02:00
stop ( ) ;
2009-01-10 01:16:48 +01:00
jQuery . getScript ( url ( "data/test.js" ) , function ( ) {
start ( ) ;
} ) ;
2007-08-20 01:37:26 +02:00
} ) ;
2011-01-16 05:27:16 +01:00
jQuery . each ( [ "Same Domain" , "Cross Domain" ] , function ( crossDomain , label ) {
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
test ( "jQuery.ajax() - JSONP, " + label , function ( ) {
2011-01-31 18:53:44 +01:00
expect ( 20 ) ;
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
var count = 0 ;
2011-01-31 18:53:44 +01:00
function plus ( ) { if ( ++ count == 18 ) start ( ) ; }
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
stop ( ) ;
2006-11-18 14:37:01 +01:00
2011-01-16 05:27:16 +01: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 18:36:00 +01:00
2011-01-16 05:27:16 +01: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 18:36:00 +01:00
2011-01-16 05:27:16 +01: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 18:36:00 +01:00
2011-01-16 05:27:16 +01: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 21:48:52 +01:00
2011-01-16 05:27:16 +01: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-04 01:45:14 +02:00
2011-01-16 05:27:16 +01: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 02:17:14 +01:00
2011-01-16 05:27:16 +01: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-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
jsonp : "callback" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, data obj callback)" ) ;
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
}
} ) ;
2010-11-24 23:35:26 +01:00
2011-01-16 05:27:16 +01:00
window . jsonpResults = function ( data ) {
ok ( data . data , "JSON results returned (GET, custom callback function)" ) ;
window . jsonpResults = undefined ;
2010-11-24 23:35:26 +01:00
plus ( ) ;
2011-01-16 05:27:16 +01:00
} ;
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01: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-04 01:45:14 +02:00
2011-01-31 18:53:44 +01:00
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
jsonpCallback : "functionToCleanUp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, custom callback name to be cleaned up)" ) ;
strictEqual ( window . functionToCleanUp , undefined , "Callback was removed (GET, custom callback name to be cleaned up)" ) ;
plus ( ) ;
var xhr ;
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
jsonpCallback : "functionToCleanUp" ,
2011-02-01 16:00:30 +01:00
beforeSend : function ( jqXHR ) {
xhr = jqXHR ;
2011-01-31 18:53:44 +01:00
return false ;
}
} ) ;
xhr . error ( function ( ) {
ok ( true , "Ajax error JSON (GET, custom callback name to be cleaned up)" ) ;
strictEqual ( window . functionToCleanUp , undefined , "Callback was removed after early abort (GET, custom callback name to be cleaned up)" ) ;
plus ( ) ;
} ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, custom callback name to be cleaned up)" ) ;
plus ( ) ;
}
} ) ;
2011-01-16 05:27:16 +01:00
jQuery . ajax ( {
type : "POST" ,
url : "data/jsonp.php" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
success : function ( data ) {
ok ( data . data , "JSON results returned (POST, no callback)" ) ;
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
}
} ) ;
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
jQuery . ajax ( {
type : "POST" ,
url : "data/jsonp.php" ,
data : "callback=?" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
success : function ( data ) {
ok ( data . data , "JSON results returned (POST, data callback)" ) ;
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (POST, data callback)" ) ;
plus ( ) ;
}
} ) ;
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
jQuery . ajax ( {
type : "POST" ,
url : "data/jsonp.php" ,
jsonp : "callback" ,
dataType : "jsonp" ,
crossDomain : crossDomain ,
success : function ( data ) {
ok ( data . data , "JSON results returned (POST, data obj callback)" ) ;
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (POST, data obj callback)" ) ;
plus ( ) ;
}
} ) ;
2007-09-04 01:45:14 +02:00
2011-01-16 05:27:16 +01: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-04 01:45:14 +02:00
2011-01-16 05:27:16 +01:00
jQuery . ajax ( {
url : "data/jsonp.php?callback=XXX" ,
dataType : "jsonp" ,
jsonp : false ,
jsonpCallback : "XXX" ,
crossDomain : crossDomain ,
beforeSend : function ( ) {
2011-01-16 05:36:20 +01: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 05:27:16 +01:00
} ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, custom callback name with no url manipulation)" ) ;
plus ( ) ;
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, custom callback name with no url manipulation)" ) ;
plus ( ) ;
}
} ) ;
2007-09-04 01:45:14 +02:00
2006-11-18 14:37:01 +01:00
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax() - script, Remote" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 2 ) ;
2010-03-23 21:24:51 +01:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2007-09-04 01:45:14 +02:00
2006-11-18 14:37:01 +01:00
stop ( ) ;
2007-09-04 01:45:14 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
url : base + "data/test.js" ,
dataType : "script" ,
success : function ( data ) {
2009-01-10 01:16:48 +01:00
ok ( foobar , "Script results returned (GET, no callback)" ) ;
2007-09-04 01:45:14 +02:00
start ( ) ;
}
2006-11-18 14:37:01 +01:00
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax() - script, Remote with POST" , function ( ) {
2007-12-11 21:16:19 +01:00
expect ( 3 ) ;
2010-03-23 21:24:51 +01:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2010-12-30 07:34:48 +01:00
2007-12-11 21:16:19 +01:00
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-12-11 21:16:19 +01:00
url : base + "data/test.js" ,
type : "POST" ,
dataType : "script" ,
success : function ( data , status ) {
2009-05-16 22:22:47 +02:00
ok ( foobar , "Script results returned (POST, no callback)" ) ;
equals ( status , "success" , "Script results returned (POST, no callback)" ) ;
start ( ) ;
} ,
error : function ( xhr ) {
ok ( false , "ajax error, status code: " + xhr . status ) ;
2007-12-11 21:16:19 +01:00
start ( ) ;
}
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax() - script, Remote with scheme-less URL" , function ( ) {
2007-12-12 21:54:44 +01:00
expect ( 2 ) ;
2010-03-23 21:24:51 +01:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2007-12-12 21:54:44 +01:00
base = base . replace ( /^.*?\/\// , "//" ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-12-12 21:54:44 +01:00
url : base + "data/test.js" ,
dataType : "script" ,
success : function ( data ) {
2009-01-10 01:16:48 +01:00
ok ( foobar , "Script results returned (GET, no callback)" ) ;
2007-12-12 21:54:44 +01:00
start ( ) ;
}
} ) ;
} ) ;
2010-01-07 18:21:58 +01:00
test ( "jQuery.ajax() - malformed JSON" , function ( ) {
2010-01-26 00:48:52 +01:00
expect ( 2 ) ;
2010-01-07 18:21:58 +01:00
stop ( ) ;
jQuery . ajax ( {
url : "data/badjson.js" ,
dataType : "json" ,
success : function ( ) {
ok ( false , "Success." ) ;
start ( ) ;
} ,
2010-01-26 00:48:52 +01:00
error : function ( xhr , msg , detailedMsg ) {
2010-01-07 18:21:58 +01:00
equals ( "parsererror" , msg , "A parse error occurred." ) ;
2010-01-26 00:48:52 +01:00
ok ( /^Invalid JSON/ . test ( detailedMsg ) , "Detailed parsererror message provided" ) ;
2010-01-07 18:21:58 +01:00
start ( ) ;
}
} ) ;
} ) ;
2010-01-06 16:19:38 +01:00
test ( "jQuery.ajax() - script by content-type" , function ( ) {
2011-01-31 19:14:06 +01:00
expect ( 2 ) ;
2010-01-06 16:19:38 +01:00
stop ( ) ;
2011-01-31 19:14:06 +01:00
jQuery . when (
jQuery . ajax ( {
url : "data/script.php" ,
data : { header : "script" }
} ) ,
jQuery . ajax ( {
url : "data/script.php" ,
data : { header : "ecma" }
} )
) . then ( start , start ) ;
2010-01-06 16:19:38 +01:00
} ) ;
2010-01-06 01:48:16 +01:00
test ( "jQuery.ajax() - json by content-type" , function ( ) {
expect ( 5 ) ;
stop ( ) ;
jQuery . ajax ( {
url : "data/json.php" ,
data : { header : "json" , json : "array" } ,
success : function ( json ) {
ok ( json . length >= 2 , "Check length" ) ;
equals ( json [ 0 ] . name , 'John' , 'Check JSON: first, name' ) ;
equals ( json [ 0 ] . age , 21 , 'Check JSON: first, age' ) ;
equals ( json [ 1 ] . name , 'Peter' , 'Check JSON: second, name' ) ;
equals ( json [ 1 ] . age , 25 , 'Check JSON: second, age' ) ;
start ( ) ;
}
} ) ;
} ) ;
2010-12-09 19:34:28 +01:00
test ( "jQuery.ajax() - json by content-type disabled with options" , function ( ) {
expect ( 6 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/json.php" ) ,
data : { header : "json" , json : "array" } ,
2010-12-28 02:30:51 +01:00
contents : {
2010-12-09 19:34:28 +01:00
json : false
} ,
success : function ( text ) {
equals ( typeof text , "string" , "json wasn't auto-determined" ) ;
2010-12-28 02:30:51 +01:00
var json = jQuery . parseJSON ( text ) ;
2010-12-09 19:34:28 +01:00
ok ( json . length >= 2 , "Check length" ) ;
equals ( json [ 0 ] . name , 'John' , 'Check JSON: first, name' ) ;
equals ( json [ 0 ] . age , 21 , 'Check JSON: first, age' ) ;
equals ( json [ 1 ] . name , 'Peter' , 'Check JSON: second, name' ) ;
equals ( json [ 1 ] . age , 25 , 'Check JSON: second, age' ) ;
start ( ) ;
}
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.getJSON(String, Hash, Function) - JSON array" , function ( ) {
2009-09-15 18:45:37 +02:00
expect ( 5 ) ;
2006-11-18 14:37:01 +01:00
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . getJSON ( url ( "data/json.php" ) , { json : "array" } , function ( json ) {
2009-09-15 18:45:37 +02:00
ok ( json . length >= 2 , "Check length" ) ;
2008-05-06 20:56:02 +02:00
equals ( json [ 0 ] . name , 'John' , 'Check JSON: first, name' ) ;
equals ( json [ 0 ] . age , 21 , 'Check JSON: first, age' ) ;
equals ( json [ 1 ] . name , 'Peter' , 'Check JSON: second, name' ) ;
equals ( json [ 1 ] . age , 25 , 'Check JSON: second, age' ) ;
2006-11-18 14:37:01 +01:00
start ( ) ;
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.getJSON(String, Function) - JSON object" , function ( ) {
2006-11-18 14:37:01 +01:00
expect ( 2 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . getJSON ( url ( "data/json.php" ) , function ( json ) {
2009-09-15 18:45:37 +02:00
if ( json && json . data ) {
equals ( json . data . lang , 'en' , 'Check JSON: lang' ) ;
equals ( json . data . length , 25 , 'Check JSON: length' ) ;
}
2006-11-18 14:37:01 +01:00
start ( ) ;
} ) ;
} ) ;
2009-05-20 23:28:48 +02:00
test ( "jQuery.getJSON - Using Native JSON" , function ( ) {
expect ( 2 ) ;
2010-12-30 07:34:48 +01:00
2009-05-20 23:28:48 +02:00
var old = window . JSON ;
JSON = {
parse : function ( str ) {
ok ( true , "Verifying that parse method was run" ) ;
return true ;
}
} ;
stop ( ) ;
jQuery . getJSON ( url ( "data/json.php" ) , function ( json ) {
2009-12-03 17:28:49 +01:00
window . JSON = old ;
equals ( json , true , "Verifying return value" ) ;
start ( ) ;
2009-05-20 23:28:48 +02:00
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.getJSON(String, Function) - JSON object with absolute url to local content" , function ( ) {
2007-11-29 20:07:20 +01:00
expect ( 2 ) ;
2010-03-23 21:24:51 +01:00
var base = window . location . href . replace ( /[^\/]*$/ , "" ) ;
2007-11-29 20:07:20 +01:00
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . getJSON ( url ( base + "data/json.php" ) , function ( json ) {
2008-05-06 20:56:02 +02:00
equals ( json . data . lang , 'en' , 'Check JSON: lang' ) ;
equals ( json . data . length , 25 , 'Check JSON: length' ) ;
2007-11-29 20:07:20 +01:00
start ( ) ;
} ) ;
} ) ;
2011-01-31 15:58:27 +01:00
test ( "jQuery.post - data" , 3 , function ( ) {
2010-01-25 06:46:03 +01:00
stop ( ) ;
2011-01-31 15:58:27 +01:00
jQuery . when (
jQuery . post ( url ( "data/name.php" ) , { xml : "5-2" , length : 3 } , function ( xml ) {
jQuery ( 'math' , xml ) . each ( function ( ) {
equals ( jQuery ( 'calculation' , this ) . text ( ) , '5-2' , 'Check for XML' ) ;
equals ( jQuery ( 'result' , this ) . text ( ) , '3' , 'Check for XML' ) ;
2011-01-31 18:53:44 +01:00
} ) ;
2011-01-31 15:58:27 +01:00
} ) ,
jQuery . ajax ( {
url : url ( 'data/echoData.php' ) ,
type : "POST" ,
data : {
'test' : {
'length' : 7 ,
'foo' : 'bar'
}
} ,
success : function ( data ) {
strictEqual ( data , 'test%5Blength%5D=7&test%5Bfoo%5D=bar' , 'Check if a sub-object with a length param is serialized correctly' ) ;
}
} )
) . then ( start , start ) ;
2010-01-25 06:46:03 +01:00
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.post(String, Hash, Function) - simple with xml" , function ( ) {
2007-09-15 03:18:30 +02:00
expect ( 4 ) ;
2006-11-18 14:37:01 +01:00
stop ( ) ;
2009-01-12 02:12:58 +01:00
var done = 0 ;
2008-05-29 01:18:25 +02:00
jQuery . post ( url ( "data/name.php" ) , { xml : "5-2" } , function ( xml ) {
jQuery ( 'math' , xml ) . each ( function ( ) {
2009-05-01 02:59:27 +02:00
equals ( jQuery ( 'calculation' , this ) . text ( ) , '5-2' , 'Check for XML' ) ;
equals ( jQuery ( 'result' , this ) . text ( ) , '3' , 'Check for XML' ) ;
2006-11-18 14:37:01 +01:00
} ) ;
2009-01-12 02:12:58 +01:00
if ( ++ done === 2 ) start ( ) ;
2007-09-15 03:18:30 +02:00
} ) ;
2008-05-29 01:18:25 +02:00
jQuery . post ( url ( "data/name.php?xml=5-2" ) , { } , function ( xml ) {
jQuery ( 'math' , xml ) . each ( function ( ) {
2009-05-01 02:59:27 +02:00
equals ( jQuery ( 'calculation' , this ) . text ( ) , '5-2' , 'Check for XML' ) ;
equals ( jQuery ( 'result' , this ) . text ( ) , '3' , 'Check for XML' ) ;
2007-09-15 03:18:30 +02:00
} ) ;
2009-01-12 02:12:58 +01:00
if ( ++ done === 2 ) start ( ) ;
2006-11-18 14:37:01 +01:00
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajaxSetup({timeout: Number}) - with global timeout" , function ( ) {
2006-11-18 14:37:01 +01:00
stop ( ) ;
2009-05-01 02:59:27 +02:00
2006-11-18 14:37:01 +01:00
var passed = 0 ;
2007-08-20 01:37:26 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { timeout : 1000 } ) ;
2009-05-01 02:59:27 +02:00
2006-11-18 14:37:01 +01:00
var pass = function ( ) {
passed ++ ;
2007-08-20 01:37:26 +02:00
if ( passed == 2 ) {
2006-11-18 14:37:01 +01:00
ok ( true , 'Check local and global callbacks after timeout' ) ;
2009-05-01 02:59:27 +02:00
jQuery ( '#main' ) . unbind ( "ajaxError" ) ;
2006-11-18 14:37:01 +01:00
start ( ) ;
}
} ;
2009-05-01 02:59:27 +02:00
2007-08-20 01:37:26 +02:00
var fail = function ( a , b , c ) {
ok ( false , 'Check for timeout failed ' + a + ' ' + b ) ;
2006-11-18 14:37:01 +01:00
start ( ) ;
} ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery ( '#main' ) . ajaxError ( pass ) ;
2009-05-01 02:59:27 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2006-11-18 14:37:01 +01:00
type : "GET" ,
2006-12-31 16:09:07 +01:00
url : url ( "data/name.php?wait=5" ) ,
2006-11-18 14:37:01 +01:00
error : pass ,
success : fail
} ) ;
2009-05-01 02:59:27 +02:00
2006-12-21 14:35:32 +01:00
// reset timeout
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2006-11-18 14:37:01 +01:00
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajaxSetup({timeout: Number}) with localtimeout" , function ( ) {
2007-09-04 04:55:38 +02:00
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { timeout : 50 } ) ;
2007-09-04 04:55:38 +02:00
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2006-11-18 14:37:01 +01:00
type : "GET" ,
2009-07-21 22:24:12 +02:00
timeout : 15000 ,
2006-12-31 16:09:07 +01:00
url : url ( "data/name.php?wait=1" ) ,
2006-11-18 14:37:01 +01:00
error : function ( ) {
ok ( false , 'Check for local timeout failed' ) ;
start ( ) ;
} ,
success : function ( ) {
2009-05-01 02:59:27 +02:00
ok ( true , 'Check for local timeout' ) ;
start ( ) ;
2006-11-18 14:37:01 +01:00
}
} ) ;
2007-09-04 04:55:38 +02:00
2006-11-18 14:37:01 +01:00
// reset timeout
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( { timeout : 0 } ) ;
2006-11-18 14:37:01 +01:00
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax - simple get" , function ( ) {
2006-11-18 14:37:01 +01:00
expect ( 1 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2006-11-18 14:37:01 +01:00
type : "GET" ,
2006-12-31 16:09:07 +01:00
url : url ( "data/name.php?name=foo" ) ,
2006-11-18 14:37:01 +01:00
success : function ( msg ) {
2009-05-01 02:59:27 +02:00
equals ( msg , 'bar' , 'Check for GET' ) ;
start ( ) ;
2006-11-18 14:37:01 +01:00
}
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax - simple post" , function ( ) {
2006-11-18 14:37:01 +01:00
expect ( 1 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2006-11-18 14:37:01 +01:00
type : "POST" ,
2006-12-31 16:09:07 +01:00
url : url ( "data/name.php" ) ,
2006-11-18 14:37:01 +01:00
data : "name=peter" ,
success : function ( msg ) {
2009-05-01 02:59:27 +02:00
equals ( msg , 'pan' , 'Check for POST' ) ;
start ( ) ;
2006-11-18 14:37:01 +01:00
}
} ) ;
} ) ;
2006-12-22 14:56:36 +01:00
test ( "ajaxSetup()" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajaxSetup ( {
2006-12-31 16:09:07 +01:00
url : url ( "data/name.php?name=foo" ) ,
2006-12-22 14:56:36 +01:00
success : function ( msg ) {
2009-05-01 02:59:27 +02:00
equals ( msg , 'bar' , 'Check for GET' ) ;
2006-12-22 14:56:36 +01:00
start ( ) ;
}
} ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( ) ;
2006-12-22 14:56:36 +01:00
} ) ;
2007-01-02 13:39:13 +01:00
2009-01-05 23:14:26 +01:00
/ *
2007-03-25 12:55:22 +02:00
test ( "custom timeout does not set error message when timeout occurs, see #970" , function ( ) {
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2009-01-05 23:05:59 +01:00
url : "data/name.php?wait=1" ,
2007-03-25 12:55:22 +02:00
timeout : 500 ,
error : function ( request , status ) {
ok ( status != null , "status shouldn't be null in error handler" ) ;
equals ( "timeout" , status ) ;
start ( ) ;
}
} ) ;
} ) ;
2009-01-05 23:14:26 +01:00
* /
2007-03-25 12:55:22 +02:00
2008-05-07 00:21:43 +02:00
test ( "data option: evaluate function values (#2806)" , function ( ) {
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2008-05-07 00:21:43 +02:00
url : "data/echoQuery.php" ,
data : {
key : function ( ) {
return "value" ;
}
} ,
success : function ( result ) {
equals ( result , "key=value" ) ;
start ( ) ;
}
2011-01-07 15:52:58 +01:00
} ) ;
2008-05-07 00:21:43 +02:00
} ) ;
2010-06-15 05:08:28 +02: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 ) {
equals ( result , "" ) ;
start ( ) ;
}
2011-01-07 15:52:58 +01:00
} ) ;
2010-06-15 05:08:28 +02:00
} ) ;
2011-01-31 19:59:53 +01:00
var ifModifiedNow = new Date ( ) ;
2009-06-15 15:36:12 +02:00
2011-01-31 19:59:53 +01:00
jQuery . each ( { " (cache)" : true , " (no cache)" : false } , function ( label , cache ) {
2009-06-15 15:36:12 +02:00
2011-01-31 19:59:53 +01:00
test ( "jQuery.ajax - If-Modified-Since support" + label , function ( ) {
expect ( 3 ) ;
2009-06-15 15:36:12 +02:00
2011-01-31 19:59:53 +01:00
stop ( ) ;
2010-12-30 07:34:48 +01:00
2011-01-31 19:59:53 +01:00
var url = "data/if_modified_since.php?ts=" + ifModifiedNow ++ ;
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
equals ( status , "success" ) ;
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
if ( data === "FAIL" ) {
ok ( jQuery . browser . opera , "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ) ;
ok ( jQuery . browser . opera , "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ) ;
} else {
equals ( status , "notmodified" ) ;
ok ( data == null , "response body should be empty" ) ;
}
start ( ) ;
} ,
error : function ( ) {
// Do this because opera simply refuses to implement 304 handling :(
// A feature-driven way of detecting this would be appreciated
// See: http://gist.github.com/599419
ok ( jQuery . browser . opera , "error" ) ;
ok ( jQuery . browser . opera , "error" ) ;
start ( ) ;
2009-07-14 23:13:23 +02:00
}
2011-01-31 19:59:53 +01:00
} ) ;
} ,
error : function ( ) {
equals ( false , "error" ) ;
// Do this because opera simply refuses to implement 304 handling :(
// A feature-driven way of detecting this would be appreciated
// See: http://gist.github.com/599419
ok ( jQuery . browser . opera , "error" ) ;
start ( ) ;
}
} ) ;
2009-06-15 15:36:12 +02:00
} ) ;
2011-01-31 19:59:53 +01:00
test ( "jQuery.ajax - Etag support" + label , function ( ) {
expect ( 3 ) ;
2009-06-15 15:36:12 +02:00
2011-01-31 19:59:53 +01:00
stop ( ) ;
2009-06-15 15:36:12 +02:00
2011-01-31 19:59:53 +01:00
var url = "data/etag.php?ts=" + ifModifiedNow ++ ;
2009-06-15 15:36:12 +02:00
2011-01-31 19:59:53 +01:00
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
equals ( status , "success" ) ;
2010-12-30 07:34:48 +01:00
2011-01-31 19:59:53 +01:00
jQuery . ajax ( {
url : url ,
ifModified : true ,
cache : cache ,
success : function ( data , status ) {
if ( data === "FAIL" ) {
ok ( jQuery . browser . opera , "Opera is incapable of doing .setRequestHeader('If-None-Match')." ) ;
ok ( jQuery . browser . opera , "Opera is incapable of doing .setRequestHeader('If-None-Match')." ) ;
} else {
equals ( status , "notmodified" ) ;
ok ( data == null , "response body should be empty" ) ;
}
start ( ) ;
} ,
error : function ( ) {
// Do this because opera simply refuses to implement 304 handling :(
// A feature-driven way of detecting this would be appreciated
// See: http://gist.github.com/599419
ok ( jQuery . browser . opera , "error" ) ;
ok ( jQuery . browser . opera , "error" ) ;
start ( ) ;
2009-07-14 23:13:23 +02:00
}
2011-01-31 19:59:53 +01: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
ok ( jQuery . browser . opera , "error" ) ;
start ( ) ;
}
} ) ;
2009-06-15 15:36:12 +02:00
} ) ;
} ) ;
2010-12-09 19:34:28 +01:00
test ( "jQuery ajax - failing cross-domain" , function ( ) {
expect ( 2 ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01:00
stop ( ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01:00
var i = 2 ;
2011-01-05 22:41:23 +01:00
2011-01-16 02:57:39 +01:00
jQuery . ajax ( {
2010-12-28 02:30:51 +01:00
url : 'http://somewebsitethatdoesnotexist-67864863574657654.com' ,
2010-12-09 19:34:28 +01:00
success : function ( ) { ok ( false , "success" ) ; } ,
error : function ( xhr , _ , e ) { ok ( true , "file not found: " + xhr . status + " => " + e ) ; } ,
complete : function ( ) { if ( ! -- i ) start ( ) ; }
2011-01-16 02:57:39 +01:00
} ) ;
2011-01-05 22:41:23 +01:00
2011-01-16 02:57:39 +01:00
jQuery . ajax ( {
2010-12-09 19:34:28 +01:00
url : 'http://www.google.com' ,
success : function ( ) { ok ( false , "success" ) ; } ,
error : function ( xhr , _ , e ) { ok ( true , "access denied: " + xhr . status + " => " + e ) ; } ,
complete : function ( ) { if ( ! -- i ) start ( ) ; }
2011-01-16 02:57:39 +01:00
} ) ;
2011-01-05 22:41:23 +01:00
2010-12-09 19:34:28 +01:00
} ) ;
test ( "jQuery ajax - atom+xml" , function ( ) {
stop ( ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01:00
jQuery . ajax ( {
url : url ( 'data/atom+xml.php' ) ,
success : function ( ) { ok ( true , "success" ) ; } ,
error : function ( ) { ok ( false , "error" ) ; } ,
complete : function ( ) { start ( ) ; }
} ) ;
2010-12-30 07:34:48 +01:00
2010-12-09 19:34:28 +01:00
} ) ;
2010-11-17 07:59:24 +01:00
test ( "jQuery.ajax - Location object as url (#7531)" , 1 , function ( ) {
var success = false ;
try {
2010-12-10 07:00:06 +01:00
var xhr = jQuery . ajax ( { url : window . location } ) ;
2010-11-17 07:59:24 +01:00
success = true ;
xhr . abort ( ) ;
} catch ( e ) { }
ok ( success , "document.location did not generate exception" ) ;
} ) ;
2010-04-29 05:45:34 +02:00
2011-01-13 17:01:25 +01:00
test ( "jQuery.ajax - statusCode" , function ( ) {
2011-01-20 15:39:30 +01:00
var count = 12 ;
2011-01-13 17:01:25 +01:00
2011-01-20 15:39:30 +01:00
expect ( 20 ) ;
2011-01-13 17:01:25 +01: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 02:57:39 +01:00
} ;
2011-01-13 17:01:25 +01: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 16:00:30 +01:00
complete : function ( jqXHR ) {
jqXHR . statusCode ( createStatusCodes ( "on complete" , isSuccess ) ) ;
2011-01-13 17:01:25 +01:00
countComplete ( ) ;
}
} ) ;
jQuery . ajax ( url ( uri ) , {
2011-02-01 16:00:30 +01:00
complete : function ( jqXHR ) {
2011-01-13 17:01:25 +01:00
setTimeout ( function ( ) {
2011-02-01 16:00:30 +01:00
jqXHR . statusCode ( createStatusCodes ( "very late binding" , isSuccess ) ) ;
2011-01-13 17:01:25 +01:00
countComplete ( ) ;
} , 100 ) ;
}
} ) ;
jQuery . ajax ( url ( uri ) , {
statusCode : createStatusCodes ( "all (options)" , isSuccess ) ,
2011-02-01 16:00:30 +01:00
complete : function ( jqXHR ) {
jqXHR . statusCode ( createStatusCodes ( "all (on complete)" , isSuccess ) ) ;
2011-01-13 17:01:25 +01:00
setTimeout ( function ( ) {
2011-02-01 16:00:30 +01:00
jqXHR . statusCode ( createStatusCodes ( "all (very late binding)" , isSuccess ) ) ;
2011-01-13 17:01:25 +01:00
countComplete ( ) ;
} , 100 ) ;
}
} ) . statusCode ( createStatusCodes ( "all (immediately with method)" , isSuccess ) ) ;
2011-01-20 15:39:30 +01:00
var testString = "" ;
jQuery . ajax ( url ( uri ) , {
2011-02-01 16:00:30 +01:00
success : function ( a , b , jqXHR ) {
2011-01-20 15:39:30 +01:00
ok ( isSuccess , "success" ) ;
var statusCode = { } ;
2011-02-01 16:00:30 +01:00
statusCode [ jqXHR . status ] = function ( ) {
2011-01-20 15:39:30 +01:00
testString += "B" ;
} ;
2011-02-01 16:00:30 +01:00
jqXHR . statusCode ( statusCode ) ;
2011-01-20 15:39:30 +01:00
testString += "A" ;
} ,
2011-02-01 16:00:30 +01:00
error : function ( jqXHR ) {
2011-01-20 15:39:30 +01:00
ok ( ! isSuccess , "error" ) ;
var statusCode = { } ;
2011-02-01 16:00:30 +01:00
statusCode [ jqXHR . status ] = function ( ) {
2011-01-20 15:39:30 +01:00
testString += "B" ;
} ;
2011-02-01 16:00:30 +01:00
jqXHR . statusCode ( statusCode ) ;
2011-01-20 15:39:30 +01:00
testString += "A" ;
} ,
complete : function ( ) {
strictEqual ( testString , "AB" , "Test statusCode callbacks are ordered like " +
( isSuccess ? "success" : "error" ) + " callbacks" ) ;
countComplete ( ) ;
}
} ) ;
2011-01-13 17:01:25 +01:00
2011-01-20 15:39:30 +01:00
} ) ;
2011-01-13 17:01:25 +01:00
} ) ;
2011-01-21 03:58:28 +01:00
test ( "jQuery.ajax - transitive conversions" , function ( ) {
expect ( 8 ) ;
stop ( ) ;
jQuery . when (
jQuery . ajax ( url ( "data/json.php" ) , {
converters : {
2011-01-31 17:39:54 +01:00
"json myJson" : function ( data ) {
2011-01-21 03:58:28 +01:00
ok ( true , "converter called" ) ;
return data ;
}
} ,
2011-01-31 17:39:54 +01:00
dataType : "myJson" ,
2011-01-21 03:58:28 +01: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 17:39:54 +01:00
"json myJson" : function ( data ) {
2011-01-21 03:58:28 +01:00
ok ( true , "converter called (*)" ) ;
return data ;
}
} ,
contents : false , /* headers are wrong so we ignore them */
2011-01-31 17:39:54 +01:00
dataType : "* myJson" ,
2011-01-21 03:58:28 +01: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 (*)" ) ;
}
} )
) . then ( start , start ) ;
} ) ;
2011-02-09 17:47:33 +01: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" ) ;
}
} )
) . then ( start , start ) ;
} ) ;
2011-02-04 22:19:23 +01:00
test ( "jQuery.ajax - abort in prefilter" , function ( ) {
expect ( 1 ) ;
jQuery . ajaxPrefilter ( function ( options , _ , jqXHR ) {
if ( options . abortInPrefilter ) {
jqXHR . abort ( ) ;
}
} ) ;
strictEqual ( jQuery . ajax ( {
abortInPrefilter : true ,
error : function ( ) {
ok ( false , "error callback called" ) ;
}
} ) , false , "Request was properly aborted early by the prefilter" ) ;
} ) ;
2011-01-19 18:44:21 +01:00
test ( "jQuery.ajax - active counter" , function ( ) {
ok ( jQuery . active == 0 , "ajax active counter should be zero: " + jQuery . active ) ;
} ) ;
2007-01-08 01:12:41 +01:00
}
2007-08-20 01:37:26 +02:00
2010-12-09 19:34:28 +01:00
//}