2006-11-18 14:37:01 +01:00
module ( "ajax" ) ;
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
} ) ;
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
2010-09-22 18:52:44 +02:00
test ( ".ajax() - hash" , function ( ) {
expect ( 3 ) ;
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 ;
}
} ) ;
jQuery . ajax ( {
url : "data/name.html?abc#foo" ,
beforeSend : function ( xhr , settings ) {
equals ( settings . url , "data/name.html?abc" , "Make sure that the URL is trimmed." ) ;
return false ;
}
} ) ;
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 ;
}
} ) ;
} ) ;
2010-09-21 21:22:34 +02:00
test ( ".ajax() - 304" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
jQuery . ajax ( {
url : url ( "data/notmodified.php" ) ,
success : function ( ) { ok ( true , "304 ok" ) ; } ,
2010-10-11 00:46:32 +02: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
error : function ( ) { ok ( jQuery . browser . opera , "304 not ok " ) ; } ,
2010-09-21 21:22:34 +02:00
complete : function ( xhr ) { start ( ) ; }
} ) ;
} ) ;
2010-01-25 03:58:32 +01:00
test ( ".load()) - 404 error callbacks" , function ( ) {
expect ( 6 ) ;
stop ( ) ;
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) . ajaxError ( function ( ) {
ok ( true , "ajaxError" ) ;
} ) . ajaxSuccess ( function ( ) {
ok ( false , "ajaxSuccess" ) ;
} ) ;
jQuery ( "<div/>" ) . load ( "data/404.html" , function ( ) {
ok ( true , "complete" ) ;
} ) ;
} ) ;
2010-01-06 18:13:56 +01:00
test ( "jQuery.ajax() - abort" , function ( ) {
expect ( 6 ) ;
stop ( ) ;
jQuery ( '#foo' ) . ajaxStart ( function ( ) {
ok ( true , "ajaxStart" ) ;
} ) . ajaxStop ( function ( ) {
ok ( true , "ajaxStop" ) ;
start ( ) ;
} ) . ajaxSend ( function ( ) {
ok ( true , "ajaxSend" ) ;
} ) . ajaxComplete ( function ( ) {
ok ( true , "ajaxComplete" ) ;
} ) ;
var xhr = jQuery . ajax ( {
url : url ( "data/name.php?wait=5" ) ,
beforeSend : function ( ) { ok ( true , "beforeSend" ) ; } ,
complete : function ( ) { ok ( true , "complete" ) ; }
} ) ;
xhr . abort ( ) ;
} ) ;
2009-09-15 17:19:58 +02:00
test ( "Ajax events with context" , function ( ) {
2010-01-16 16:11:01 +01:00
expect ( 14 ) ;
2009-09-15 17:19:58 +02:00
stop ( ) ;
2009-11-17 20:36:10 +01:00
var context = document . createElement ( "div" ) ;
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
}
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 ( ) ;
var obj = { }
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." ) ;
} ) ;
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
}
} ) ;
} ) ;
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" ) ;
} ) ;
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 ( ) ,
'T3=%3F%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 ( ) ,
'T3=%3F%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-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&T3=%3F%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 ( ) ,
2009-12-17 03:02:58 +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%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 ( ) {
2010-09-24 22:57:25 +02:00
expect ( 22 ) ;
2009-09-18 00:37:19 +02:00
2010-02-06 01:43:31 +01:00
equals ( ! jQuery . ajaxSettings . traditional , true , "traditional flag, falsy by default" ) ;
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" ) ;
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" ) ;
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" ) ;
2009-09-18 00:37:19 +02: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" ) ;
2009-12-22 14:09:56 +01:00
jQuery . ajaxSetup ( { traditional : true } ) ;
2009-09-18 00:37:19 +02: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" ) ;
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" ) ;
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)" ) ;
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-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." ) ;
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 ) ;
2009-09-15 17:19:58 +02: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
} ) ;
} ) ;
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 ( ) {
2007-08-20 01:37:26 +02:00
expect ( 2 ) ;
stop ( ) ;
2008-05-29 01:18:25 +02:00
jQuery . getScript ( url ( "data/test.js" ) , function ( ) {
2009-01-10 01:16:48 +01:00
equals ( foobar , "bar" , 'Check if script was evaluated' ) ;
2007-08-20 01:37:26 +02:00
setTimeout ( start , 100 ) ;
} ) ;
} ) ;
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
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax() - JSONP, Local" , function ( ) {
2009-12-07 02:17:14 +01:00
expect ( 8 ) ;
2007-09-04 01:45:14 +02:00
var count = 0 ;
2009-12-07 02:17:14 +01:00
function plus ( ) { if ( ++ count == 8 ) start ( ) ; }
2007-09-04 01:45:14 +02:00
2007-08-20 01:37:26 +02: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 : "data/jsonp.php" ,
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, no callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, no callback)" ) ;
plus ( ) ;
2007-09-04 01:45:14 +02:00
}
2007-08-20 01:37:26 +02:00
} ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
url : "data/jsonp.php?callback=?" ,
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, url callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, url callback)" ) ;
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
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
url : "data/jsonp.php" ,
dataType : "jsonp" ,
data : "callback=?" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, data callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data callback)" ) ;
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
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
url : "data/jsonp.php" ,
dataType : "jsonp" ,
2007-12-17 01:44:00 +01:00
jsonp : "callback" ,
2007-09-04 01:45:14 +02:00
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, data obj callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
2007-09-04 01:45:14 +02:00
}
} ) ;
2009-12-07 02:17:14 +01:00
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
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 ( ) ;
}
} ) ;
2008-05-29 01:18:25 +02:00
jQuery . ajax ( {
2007-09-04 01:45:14 +02:00
type : "POST" ,
url : "data/jsonp.php" ,
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (POST, no callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
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
type : "POST" ,
url : "data/jsonp.php" ,
data : "callback=?" ,
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (POST, data callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (POST, data callback)" ) ;
plus ( ) ;
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
type : "POST" ,
url : "data/jsonp.php" ,
2007-12-17 01:44:00 +01:00
jsonp : "callback" ,
2007-09-04 01:45:14 +02:00
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (POST, data obj callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (POST, data obj callback)" ) ;
plus ( ) ;
2007-09-04 01:45:14 +02:00
}
} ) ;
2006-11-18 14:37:01 +01:00
} ) ;
2009-12-07 02:17:14 +01:00
test ( "JSONP - Custom JSONP Callback" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
window . jsonpResults = function ( data ) {
ok ( data . data , "JSON results returned (GET, custom callback function)" ) ;
start ( ) ;
} ;
jQuery . ajax ( {
url : "data/jsonp.php" ,
dataType : "jsonp" ,
jsonpCallback : "jsonpResults"
} ) ;
} ) ;
2008-05-29 01:18:25 +02:00
test ( "jQuery.ajax() - JSONP, Remote" , function ( ) {
2007-09-04 01:45:14 +02:00
expect ( 4 ) ;
var count = 0 ;
function plus ( ) { if ( ++ count == 4 ) start ( ) ; }
2010-03-23 21:22:09 +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/jsonp.php" ,
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, no callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, no callback)" ) ;
plus ( ) ;
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/jsonp.php?callback=?" ,
dataType : "jsonp" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, url callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, url callback)" ) ;
plus ( ) ;
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/jsonp.php" ,
dataType : "jsonp" ,
data : "callback=?" ,
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, data callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data callback)" ) ;
plus ( ) ;
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/jsonp.php" ,
dataType : "jsonp" ,
2007-12-17 01:44:00 +01:00
jsonp : "callback" ,
2007-09-04 01:45:14 +02:00
success : function ( data ) {
ok ( data . data , "JSON results returned (GET, data obj callback)" ) ;
plus ( ) ;
2007-12-07 00:23:10 +01:00
} ,
error : function ( data ) {
ok ( false , "Ajax error JSON (GET, data obj callback)" ) ;
plus ( ) ;
2007-08-20 01:37:26 +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 ( /[^\/]*$/ , "" ) ;
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 ( ) {
expect ( 1 ) ;
stop ( ) ;
jQuery . ajax ( {
url : "data/script.php" ,
data : { header : "script" } ,
success : function ( ) {
start ( ) ;
}
} ) ;
} ) ;
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 ( ) ;
}
} ) ;
} ) ;
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 ) ;
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 ( ) ;
} ) ;
} ) ;
2010-01-25 06:46:03 +01:00
test ( "jQuery.post - data" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
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' ) ;
} ) ;
start ( ) ;
} ) ;
} ) ;
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 ( ) ;
}
} )
} ) ;
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 ( ) ;
}
} )
} ) ;
2009-06-15 15:36:12 +02:00
test ( "jQuery.ajax - If-Modified-Since support" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
var url = "data/if_modified_since.php?ts=" + new Date ( ) ;
jQuery . ajax ( {
url : url ,
ifModified : true ,
success : function ( data , status ) {
equals ( status , "success" ) ;
jQuery . ajax ( {
url : url ,
2009-06-15 15:40:10 +02:00
ifModified : true ,
2009-06-15 15:36:12 +02:00
success : function ( data , status ) {
2009-07-14 23:13:23 +02:00
if ( data === "FAIL" ) {
ok ( true , "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ) ;
ok ( true , "Opera is incapable of doing .setRequestHeader('If-Modified-Since')." ) ;
} else {
equals ( status , "notmodified" ) ;
ok ( data == null , "response body should be empty" )
}
2009-06-15 15:36:12 +02:00
start ( ) ;
2010-09-27 18:10:00 +02:00
} ,
error : function ( ) {
2010-10-11 00:46:32 +02: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
ok ( jQuery . browser . opera , "error" ) ;
ok ( jQuery . browser . opera , "error" ) ;
2010-09-27 18:10:00 +02:00
start ( ) ;
2009-06-15 15:36:12 +02:00
}
} ) ;
2010-09-27 18:10:00 +02:00
} ,
error : function ( ) {
2010-10-11 00:46:32 +02: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
ok ( jQuery . browser . opera , "error" ) ;
2010-09-27 18:10:00 +02:00
start ( ) ;
2009-06-15 15:36:12 +02:00
}
} ) ;
} ) ;
test ( "jQuery.ajax - Etag support" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
var url = "data/etag.php?ts=" + new Date ( ) ;
jQuery . ajax ( {
url : url ,
ifModified : true ,
success : function ( data , status ) {
equals ( status , "success" ) ;
jQuery . ajax ( {
url : url ,
ifModified : true ,
success : function ( data , status ) {
2009-07-14 23:13:23 +02:00
if ( data === "FAIL" ) {
2009-07-14 23:20:16 +02:00
ok ( true , "Opera is incapable of doing .setRequestHeader('If-None-Match')." ) ;
ok ( true , "Opera is incapable of doing .setRequestHeader('If-None-Match')." ) ;
2009-07-14 23:13:23 +02:00
} else {
equals ( status , "notmodified" ) ;
ok ( data == null , "response body should be empty" )
}
2009-06-15 15:36:12 +02:00
start ( ) ;
2010-09-27 18:10:00 +02:00
} ,
error : function ( ) {
2010-10-11 00:46:32 +02: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
ok ( jQuery . browser . opera , "error" ) ;
ok ( jQuery . browser . opera , "error" ) ;
2010-09-27 18:10:00 +02:00
start ( ) ;
2009-06-15 15:36:12 +02:00
}
} ) ;
2010-09-27 18:10:00 +02:00
} ,
error : function ( ) {
2010-10-11 00:46:32 +02: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
ok ( jQuery . browser . opera , "error" ) ;
2010-09-27 18:10:00 +02:00
start ( ) ;
2009-06-15 15:36:12 +02:00
}
} ) ;
} ) ;
2010-04-29 05:45:34 +02:00
test ( "jQuery.ajax - active counter" , function ( ) {
ok ( jQuery . ajax . active == 0 , "ajax active counter should be zero: " + jQuery . ajax . active ) ;
} ) ;
2007-01-08 01:12:41 +01:00
}
2007-08-20 01:37:26 +02:00
2007-09-05 19:22:13 +02:00
//}