+*/
+
+test("data option: evaluate function values (#2806)", function() {
+ stop();
+ jQuery.ajax({
+ url: "data/echoQuery.php",
+ data: {
+ key: function() {
+ return "value";
+ }
+ },
+ success: function(result) {
+ equals( result, "key=value" );
+ start();
+ }
+ })
+});
+
+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();
+ }
+ })
+});
+
+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,
+ ifModified: true,
+ success: function(data, status) {
+ 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")
+ }
+ 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();
+ }
+ });
+ },
+ 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();
+ }
+ });
+});
+
+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) {
+ if ( data === "FAIL" ) {
+ ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Match').");
+ ok(true, "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();
+ }
+ });
+ },
+ 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();
+ }
+ });
+});
+
+test("jQuery ajax - failing cross-domain", function() {
+
+ expect( 2 );
+
+ stop();
+
+ var i = 2;
+
+ jQuery.ajax({
+ url: 'http://somewebsitethatdoesnotexist.com',
+ success: function(){ ok( false , "success" ); },
+ error: function(xhr,_,e){ ok( true , "file not found: " + xhr.status + " => " + e ); },
+ complete: function() { if ( ! --i ) start(); }
+ });
+
+ jQuery.ajax({
+ url: 'http://www.google.com',
+ success: function(){ ok( false , "success" ); },
+ error: function(xhr,_,e){ ok( true , "access denied: " + xhr.status + " => " + e ); },
+ complete: function() { if ( ! --i ) start(); }
+ });
+
+});
+
+test("jQuery ajax - atom+xml", function() {
+
+ stop();
+
+ jQuery.ajax({
+ url: url( 'data/atom+xml.php' ),
+ success: function(){ ok( true , "success" ); },
+ error: function(){ ok( false , "error" ); },
+ complete: function() { start(); }
+ });
+
+});
+
+test("jQuery.ajax - active counter", function() {
+ ok( jQuery.active == 0, "ajax active counter should be zero: " + jQuery.active );
+});
+
+test( "jQuery.ajax - Location object as url (#7531)", 1, function () {
+ var success = false;
+ try {
+ var xhr = jQuery.ajax({ url: window.location });
+ success = true;
+ xhr.abort();
+ } catch (e) {}
+
+ ok( success, "document.location did not generate exception" );
+});