diff options
author | John Resig <jeresig@gmail.com> | 2007-09-08 12:42:32 +0000 |
---|---|---|
committer | John Resig <jeresig@gmail.com> | 2007-09-08 12:42:32 +0000 |
commit | b4e23b5af0820a66c2e275051f613f3df9a4444d (patch) | |
tree | 8045667211e4aa393ee1b6e006dd0c953e77c963 /src/ajax | |
parent | 13b66c8ba9618242df2c1cc352a2b1d879c36188 (diff) | |
download | jquery-b4e23b5af0820a66c2e275051f613f3df9a4444d.tar.gz jquery-b4e23b5af0820a66c2e275051f613f3df9a4444d.zip |
Reorganzing the jQuery source (first phase).
Diffstat (limited to 'src/ajax')
-rw-r--r-- | src/ajax/ajax.js | 462 | ||||
-rw-r--r-- | src/ajax/ajaxTest.js | 641 |
2 files changed, 0 insertions, 1103 deletions
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js deleted file mode 100644 index ffe30481d..000000000 --- a/src/ajax/ajax.js +++ /dev/null @@ -1,462 +0,0 @@ -jQuery.fn.extend({ - load: function( url, params, callback ) { - if ( jQuery.isFunction( url ) ) - return this.bind("load", url); - - var off = url.indexOf(" "); - if ( off >= 0 ) { - var selector = url.slice(off, url.length); - url = url.slice(0, off); - } - - callback = callback || function(){}; - - // Default to a GET request - var type = "GET"; - - // If the second parameter was provided - if ( params ) - // If it's a function - if ( jQuery.isFunction( params ) ) { - // We assume that it's the callback - callback = params; - params = null; - - // Otherwise, build a param string - } else { - params = jQuery.param( params ); - type = "POST"; - } - - var self = this; - - // Request the remote document - jQuery.ajax({ - url: url, - type: type, - data: params, - complete: function(res, status){ - // If successful, inject the HTML into all the matched elements - if ( status == "success" || status == "notmodified" ) - // See if a selector was specified - self.html( selector ? - // Create a dummy div to hold the results - jQuery("<div/>") - // inject the contents of the document in, removing the scripts - // to avoid any 'Permission Denied' errors in IE - .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")) - - // Locate the specified elements - .find(selector) : - - // If not, just inject the full result - res.responseText ); - - // Add delay to account for Safari's delay in globalEval - setTimeout(function(){ - self.each( callback, [res.responseText, status, res] ); - }, 13); - } - }); - return this; - }, - - serialize: function() { - return jQuery.param(this.serializeArray()); - }, -
serializeArray: function() {
- return this.map(function(){ - return jQuery.nodeName(this, "form") ? - jQuery.makeArray(this.elements) : this; - }) - .filter(function(){ - return this.name && !this.disabled && - (this.checked || /select|textarea/i.test(this.nodeName) || - /text|hidden|password/i.test(this.type)); - }) - .map(function(i, elem){
var val = jQuery(this).val(); - return val == null ? null : - val.constructor == Array ? - jQuery.map( val, function(i, val){
return {name: elem.name, value: val}; - }) : - {name: elem.name, value: val};
- }).get();
} -}); - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){ - jQuery.fn[o] = function(f){ - return this.bind(o, f); - }; -}); - -var jsc = (new Date).getTime(); - -jQuery.extend({ - get: function( url, data, callback, type ) { - // shift arguments if data argument was ommited - if ( jQuery.isFunction( data ) ) { - callback = data; - data = null; - } - - return jQuery.ajax({ - type: "GET", - url: url, - data: data, - success: callback, - dataType: type - }); - }, - - getScript: function( url, callback ) { - return jQuery.get(url, null, callback, "script"); - }, - - getJSON: function( url, data, callback ) { - return jQuery.get(url, data, callback, "json"); - }, - - post: function( url, data, callback, type ) { - if ( jQuery.isFunction( data ) ) { - callback = data; - data = {}; - } - - return jQuery.ajax({ - type: "POST", - url: url, - data: data, - success: callback, - dataType: type - }); - }, - - ajaxSetup: function( settings ) { - jQuery.extend( jQuery.ajaxSettings, settings ); - }, - - ajaxSettings: { - global: true, - type: "GET", - timeout: 0, - contentType: "application/x-www-form-urlencoded", - processData: true, - async: true, - data: null - }, - - // Last-Modified header cache for next request - lastModified: {}, - - ajax: function( s ) { - var jsonp, jsre = /=(\?|%3F)/g, status, data; - - // Extend the settings, but re-extend 's' so that it can be - // checked again later (in the test suite, specifically) - s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s)); - - // convert data if not already a string - if ( s.data && s.processData && typeof s.data != "string" ) - s.data = jQuery.param(s.data); - - // Break the data into one single string - var q = s.url.indexOf("?"); - if ( q > -1 ) { - s.data = (s.data ? s.data + "&" : "") + s.url.slice(q + 1); - s.url = s.url.slice(0, q); - } - - // Handle JSONP Parameter Callbacks - if ( s.dataType == "jsonp" ) { - if ( !s.data || !s.data.match(jsre) ) - s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; - s.dataType = "json"; - } - - // Build temporary JSONP function - if ( s.dataType == "json" && s.data && s.data.match(jsre) ) { - jsonp = "jsonp" + jsc++; - s.data = s.data.replace(jsre, "=" + jsonp); - - // We need to make sure - // that a JSONP style response is executed properly - s.dataType = "script"; - - // Handle JSONP-style loading - window[ jsonp ] = function(tmp){ - data = tmp; - success(); - // Garbage collect - window[ jsonp ] = undefined; - try{ delete window[ jsonp ]; } catch(e){} - }; - } - - if ( s.dataType == "script" && s.cache == null ) - s.cache = false; - - if ( s.cache === false && s.type.toLowerCase() == "get" ) - s.data = (s.data ? s.data + "&" : "") + "_=" + (new Date()).getTime(); - - // If data is available, append data to url for get requests - if ( s.data && s.type.toLowerCase() == "get" ) { - s.url += "?" + s.data; - - // IE likes to send both get and post data, prevent this - s.data = null; - } - - // Watch for a new set of requests - if ( s.global && ! jQuery.active++ ) - jQuery.event.trigger( "ajaxStart" ); - - // If we're requesting a remote document - // and trying to load JSON or Script - if ( !s.url.indexOf("http") && s.dataType == "script" ) { - var script = document.createElement("script"); - script.src = s.url; - - // Handle Script loading - if ( !jsonp && (s.success || s.complete) ) { - var done = false; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function(){ - if ( !done && (!this.readyState || - this.readyState == "loaded" || this.readyState == "complete") ) { - done = true; - success(); - complete(); - document.body.removeChild( script ); - } - }; - } - - document.body.appendChild(script); - - // We handle everything using the script element injection - return; - } - - var requestDone = false; - - // Create the request object; Microsoft failed to properly - // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available - var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); - - // Open the socket - xml.open(s.type, s.url, s.async); - - // Set the correct header, if data is being sent - if ( s.data ) - xml.setRequestHeader("Content-Type", s.contentType); - - // Set the If-Modified-Since header, if ifModified mode. - if ( s.ifModified ) - xml.setRequestHeader("If-Modified-Since", - jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); - - // Set header so the called script knows that it's an XMLHttpRequest - xml.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // Allow custom headers/mimetypes - if ( s.beforeSend ) - s.beforeSend(xml); - - if ( s.global ) - jQuery.event.trigger("ajaxSend", [xml, s]); - - // Wait for a response to come back - var onreadystatechange = function(isTimeout){ - // The transfer is complete and the data is available, or the request timed out - if ( !requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout") ) { - requestDone = true; - - // clear poll interval - if (ival) { - clearInterval(ival); - ival = null; - } - - status = isTimeout == "timeout" && "timeout" || - !jQuery.httpSuccess( xml ) && "error" || - s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" || - "success"; - - if ( status == "success" ) { - // Watch for, and catch, XML document parse errors - try { - // process the data (runs the xml through httpData regardless of callback) - data = jQuery.httpData( xml, s.dataType ); - } catch(e) { - status = "parsererror"; - } - } - - // Make sure that the request was successful or notmodified - if ( status == "success" ) { - // Cache Last-Modified header, if ifModified mode. - var modRes; - try { - modRes = xml.getResponseHeader("Last-Modified"); - } catch(e) {} // swallow exception thrown by FF if header is not available - - if ( s.ifModified && modRes ) - jQuery.lastModified[s.url] = modRes; - - // JSONP handles its own success callback - if ( !jsonp ) - success(); - } else - jQuery.handleError(s, xml, status); - - // Fire the complete handlers - complete(); - - // Stop memory leaks - if ( s.async ) - xml = null; - } - }; - - if ( s.async ) { - // don't attach the handler to the request, just poll it instead - var ival = setInterval(onreadystatechange, 13); - - // Timeout checker - if ( s.timeout > 0 ) - setTimeout(function(){ - // Check to see if the request is still happening - if ( xml ) { - // Cancel the request - xml.abort(); - - if( !requestDone ) - onreadystatechange( "timeout" ); - } - }, s.timeout); - } - - // Send the data - try { - xml.send(s.data); - } catch(e) { - jQuery.handleError(s, xml, null, e); - } - - // firefox 1.5 doesn't fire statechange for sync requests - if ( !s.async ) - onreadystatechange(); - - // return XMLHttpRequest to allow aborting the request etc. - return xml; - - function success(){ - // If a local callback was specified, fire it and pass it the data - if ( s.success ) - s.success( data, status ); - - // Fire the global callback - if ( s.global ) - jQuery.event.trigger( "ajaxSuccess", [xml, s] ); - } - - function complete(){ - // Process result - if ( s.complete ) - s.complete(xml, status); - - // The request was completed - if ( s.global ) - jQuery.event.trigger( "ajaxComplete", [xml, s] ); - - // Handle the global AJAX counter - if ( s.global && ! --jQuery.active ) - jQuery.event.trigger( "ajaxStop" ); - } - }, - - handleError: function( s, xml, status, e ) { - // If a local callback was specified, fire it - if ( s.error ) s.error( xml, status, e ); - - // Fire the global callback - if ( s.global ) - jQuery.event.trigger( "ajaxError", [xml, s, e] ); - }, - - // Counter for holding the number of active queries - active: 0, - - // Determines if an XMLHttpRequest was successful or not - httpSuccess: function( r ) { - try { - return !r.status && location.protocol == "file:" || - ( r.status >= 200 && r.status < 300 ) || r.status == 304 || - jQuery.browser.safari && r.status == undefined; - } catch(e){} - return false; - }, - - // Determines if an XMLHttpRequest returns NotModified - httpNotModified: function( xml, url ) { - try { - var xmlRes = xml.getResponseHeader("Last-Modified"); - - // Firefox always returns 200. check Last-Modified date - return xml.status == 304 || xmlRes == jQuery.lastModified[url] || - jQuery.browser.safari && xml.status == undefined; - } catch(e){} - return false; - }, - - httpData: function( r, type ) { - var ct = r.getResponseHeader("content-type"); - var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0; - var data = xml ? r.responseXML : r.responseText; - - if ( xml && data.documentElement.tagName == "parsererror" ) - throw "parsererror"; - - // If the type is "script", eval it in global context - if ( type == "script" ) - jQuery.globalEval( data ); - - // Get the JavaScript object, if JSON is used. - if ( type == "json" ) - data = eval("(" + data + ")"); - - return data; - }, - - // Serialize an array of form elements or a set of - // key/values into a query string - param: function( a ) { - var s = []; - - // If an array was passed in, assume that it is an array - // of form elements - if ( a.constructor == Array || a.jquery ) - // Serialize the form elements - jQuery.each( a, function(){ - s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) ); - }); - - // Otherwise, assume that it's an object of key/value pairs - else - // Serialize the key/values - for ( var j in a ) - // If the value is an array then the key names need to be repeated - if ( a[j] && a[j].constructor == Array ) - jQuery.each( a[j], function(){ - s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) ); - }); - else - s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) ); - - // Return the resulting serialization - return s.join("&").replace(/%20/g, "+"); - } - -}); diff --git a/src/ajax/ajaxTest.js b/src/ajax/ajaxTest.js deleted file mode 100644 index 872ec0889..000000000 --- a/src/ajax/ajaxTest.js +++ /dev/null @@ -1,641 +0,0 @@ -module("ajax"); - -// 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 -//if ( !jQuery.browser.safari ) { - -test("$.ajax() - success callbacks", function() { - expect( 8 ); - - $.ajaxSetup({ timeout: 0 }); - - stop(); - - setTimeout(function(){ - $('#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" ); - }); - - $.ajax({ - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(true, "success"); }, - error: function(){ ok(false, "error"); }, - complete: function(){ ok(true, "complete"); } - }); - }, 13); -}); - -if ( !isLocal ) { - test("$.ajax() - error callbacks", function() { - expect( 8 ); - stop(); - - $('#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" ); - }); - - $.ajaxSetup({ timeout: 500 }); - - $.ajax({ - url: url("data/name.php?wait=5"), - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(false, "success"); }, - error: function(){ ok(true, "error"); }, - complete: function(){ ok(true, "complete"); } - }); - }); -} - -test("$.ajax() - disabled globals", function() { - expect( 3 ); - stop(); - - $('#foo').ajaxStart(function(){ - ok( false, "ajaxStart" ); - }).ajaxStop(function(){ - ok( false, "ajaxStop" ); - }).ajaxSend(function(){ - ok( false, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( false, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( false, "ajaxSuccess" ); - }); - - $.ajax({ - global: false, - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend"); }, - success: function(){ ok(true, "success"); }, - error: function(){ ok(false, "error"); }, - complete: function(){ - ok(true, "complete"); - setTimeout(function(){ start(); }, 13); - } - }); -}); - -test("$.ajax - xml: non-namespace elements inside namespaced elements", function() { - expect(3); - stop(); - $.ajax({ - url: url("data/with_fries.xml"), - dataType: "xml", - success: function(resp) { - equals( $("properties", resp).length, 1, 'properties in responseXML' ); - equals( $("jsconf", resp).length, 1, 'jsconf in responseXML' ); - equals( $("thing", resp).length, 2, 'things in responseXML' ); - start(); - } - }); -}); - -test("$.ajax - beforeSend", function() { - expect(1); - stop(); - - var check = false; - - $.ajaxSetup({ timeout: 0 }); - - $.ajax({ - url: url("data/name.html"), - beforeSend: function(xml) { - check = true; - }, - success: function(data) { - ok( check, "check beforeSend was executed" ); - start(); - } - }); -}); - -var foobar; - -test("$.ajax - dataType html", function() { - expect(5); - stop(); - - foobar = null; - testFoo = undefined; - - var verifyEvaluation = function() { - ok( testFoo == "foo", 'Check if script was evaluated for datatype html' ); - ok( foobar == "bar", 'Check if script src was evaluated for datatype html' ); - start(); - }; - - $.ajax({ - dataType: "html", - url: url("data/test.html"), - success: function(data) { - $("#ap").html(data); - ok( data.match(/^html text/), 'Check content for datatype html' ); - setTimeout(verifyEvaluation, 600); - } - }); -}); - -test("serialize()", function() { - expect(6); - - equals( $('#form').serialize(), - "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=0&select3=1", - 'Check form serialization as query string'); - - equals( $('#form :input').serialize(), - "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=0&select3=1", - 'Check input serialization as query string'); - - equals( $('#testForm').serialize(), - 'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', - 'Check form serialization as query string'); - - equals( $('#testForm :input').serialize(), - 'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', - 'Check input serialization as query string'); - - equals( $('#form, #testForm').serialize(), - "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=0&select3=1&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", - 'Multiple form serialization as query string'); - - equals( $('#form, #testForm :input').serialize(), - "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=0&select3=1&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", - 'Mixed form/input serialization as query string'); -}); - -test("$.param()", function() { - expect(4); - var params = {foo:"bar", baz:42, quux:"All your base are belong to us"}; - equals( $.param(params), "foo=bar&baz=42&quux=All+your+base+are+belong+to+us", "simple" ); - - params = {someName: [1, 2, 3], regularThing: "blah" }; - equals( $.param(params), "someName=1&someName=2&someName=3®ularThing=blah", "with array" ); - - params = {"foo[]":["baz", 42, "All your base are belong to us"]}; - equals( $.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", "foo[beep]":42, "foo[quux]":"All your base are belong to us"}; - equals( $.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "even more arrays" ); -}); - -test("synchronous request", function() { - expect(1); - ok( /^{ "data"/.test( $.ajax({url: url("data/json_obj.js"), async: false}).responseText ), "check returned text" ); -}); - -test("synchronous request with callbacks", function() { - expect(2); - var result; - $.ajax({url: url("data/json_obj.js"), async: false, success: function(data) { ok(true, "sucess callback executed"); result = data; } }); - ok( /^{ "data"/.test( result ), "check returned text" ); -}); - -test("pass-through request object", function() { - expect(1); - stop(true); - - var target = "data/name.html"; - var count = 0; - var success = function() { - // Disabled - //if(count++ == 5) - start(); - }; - - /* Test disabled, too many simultaneous requests - ok( $.get(url(target), success), "get" ); - ok( $.post(url(target), success), "post" ); - ok( $.getScript(url("data/test.js"), success), "script" ); - ok( $.getJSON(url("data/json_obj.js"), success), "json" ); - */ - ok( $.ajax({url: url(target), success: success}), "generic" ); -}); - -test("global ajaxSettings", function() { - expect(3); - - var tmp = jQuery.extend({}, jQuery.ajaxSettings); - var orig = { url: "data/with_fries.xml", data: null }; - var t; - - $.ajaxSetup({ data: {foo: 'bar', bar: 'BAR'} }); - - t = jQuery.extend({}, orig); - $.ajax(t); - ok( t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending null" ); - - t = jQuery.extend({}, orig); - t.data = {}; - $.ajax(t); - ok( t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending {}" ); - - t = jQuery.extend({}, orig); - t.data = { zoo: 'a', ping: 'b' }; - $.ajax(t); - ok( t.url.indexOf('ping') > -1 && t.url.indexOf('zoo') > -1 && t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending { zoo: 'a', ping: 'b' }" ); - - jQuery.ajaxSettings = tmp; -}); - -test("load(String)", function() { - expect(1); - stop(true); // check if load can be called with only url - $('#first').load("data/name.html", start); -}); - -test("load('url selector')", function() { - expect(1); - stop(true); // check if load can be called with only url - $('#first').load("data/test3.html div.user", function(){ - equals( $(this).children("div").length, 2, "Verify that specific elements were injected" ); - start(); - }); -}); - -test("load(String, Function) - simple: inject text into DOM", function() { - expect(2); - stop(); - $('#first').load(url("data/name.html"), function() { - ok( /^ERROR/.test($('#first').text()), 'Check if content was injected into the DOM' ); - start(); - }); -}); - -test("load(String, Function) - check scripts", function() { - expect(7); - stop(); - window.testFoo = undefined; - window.foobar = null; - var verifyEvaluation = function() { - equals( foobar, "bar", 'Check if script src was evaluated after load' ); - equals( $('#ap').html(), 'bar', 'Check if script evaluation has modified DOM'); - start(); - }; - $('#first').load(url('data/test.html'), function() { - ok( $('#first').html().match(/^html text/), 'Check content after loading html' ); - equals( $('#foo').html(), 'foo', 'Check if script evaluation has modified DOM'); - equals( testFoo, "foo", 'Check if script was evaluated after load' ); - setTimeout(verifyEvaluation, 600); - }); -}); - -test("load(String, Function) - check file with only a script tag", function() { - expect(3); - stop(); - testFoo = undefined; - $('#first').load(url('data/test2.html'), function() { - ok( $('#foo').html() == 'foo', 'Check if script evaluation has modified DOM'); - ok( testFoo == "foo", 'Check if script was evaluated after load' ); - start(); - }); -}); - -test("$.get(String, Hash, Function) - parse xml and use text() on nodes", function() { - expect(2); - stop(); - $.get(url('data/dashboard.xml'), function(xml) { - var content = []; - $('tab', xml).each(function() { - content.push($(this).text()); - }); - equals( content[0], 'blabla', 'Check first tab'); - equals( content[1], 'blublu', 'Check second tab'); - start(); - }); -}); - -test("$.getScript(String, Function) - with callback", function() { - expect(2); - stop(); - $.getScript(url("data/test.js"), function() { - equals( foobar, "bar", 'Check if script was evaluated' ); - setTimeout(start, 100); - }); -}); - -test("$.getScript(String, Function) - no callback", function() { - expect(1); - stop(true); - $.getScript(url("data/test.js"), start); -}); - -if ( !isLocal ) { - -test("$.ajax() - JSONP, Local", function() { - expect(7); - - var count = 0; - function plus(){ if ( ++count == 7 ) start(); } - - stop(); - - $.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (GET, no callback)" ); - plus(); - } - }); - - $.ajax({ - url: "data/jsonp.php?callback=?", - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (GET, url callback)" ); - plus(); - } - }); - - $.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - data: "callback=?", - success: function(data){ - ok( data.data, "JSON results returned (GET, data callback)" ); - plus(); - } - }); - - $.ajax({ - url: "data/jsonp.php", - dataType: "jsonp", - data: { callback: "?" }, - success: function(data){ - ok( data.data, "JSON results returned (GET, data obj callback)" ); - plus(); - } - }); - - $.ajax({ - type: "POST", - url: "data/jsonp.php", - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (POST, no callback)" ); - plus(); - } - }); - - $.ajax({ - type: "POST", - url: "data/jsonp.php", - data: "callback=?", - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (POST, data callback)" ); - plus(); - } - }); - - $.ajax({ - type: "POST", - url: "data/jsonp.php", - data: { callback: "?" }, - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (POST, data obj callback)" ); - plus(); - } - }); -}); - -test("$.ajax() - JSONP, Remote", function() { - expect(4); - - var count = 0; - function plus(){ if ( ++count == 4 ) start(); } - - var base = window.location.href.replace(/\?.*$/, ""); - - stop(); - - $.ajax({ - url: base + "data/jsonp.php", - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (GET, no callback)" ); - plus(); - } - }); - - $.ajax({ - url: base + "data/jsonp.php?callback=?", - dataType: "jsonp", - success: function(data){ - ok( data.data, "JSON results returned (GET, url callback)" ); - plus(); - } - }); - - $.ajax({ - url: base + "data/jsonp.php", - dataType: "jsonp", - data: "callback=?", - success: function(data){ - ok( data.data, "JSON results returned (GET, data callback)" ); - plus(); - } - }); - - $.ajax({ - url: base + "data/jsonp.php", - dataType: "jsonp", - data: { callback: "?" }, - success: function(data){ - ok( data.data, "JSON results returned (GET, data obj callback)" ); - plus(); - } - }); -}); - -test("$.ajax() - script, Remote", function() { - expect(2); - - var base = window.location.href.replace(/\?.*$/, ""); - - stop(); - - $.ajax({ - url: base + "data/test.js", - dataType: "script", - success: function(data){ - ok( foobar, "Script results returned (GET, no callback)" ); - start(); - } - }); -}); - -test("$.getJSON(String, Hash, Function) - JSON array", function() { - expect(4); - stop(); - $.getJSON(url("data/json.php"), {json: "array"}, function(json) { - ok( json[0].name == 'John', 'Check JSON: first, name' ); - ok( json[0].age == 21, 'Check JSON: first, age' ); - ok( json[1].name == 'Peter', 'Check JSON: second, name' ); - ok( json[1].age == 25, 'Check JSON: second, age' ); - start(); - }); -}); - -test("$.getJSON(String, Function) - JSON object", function() { - expect(2); - stop(); - $.getJSON(url("data/json.php"), function(json) { - ok( json.data.lang == 'en', 'Check JSON: lang' ); - ok( json.data.length == 25, 'Check JSON: length' ); - start(); - }); -}); - -test("$.post(String, Hash, Function) - simple with xml", function() { - expect(2); - stop(); - $.post(url("data/name.php"), {xml: "5-2"}, function(xml){ - $('math', xml).each(function() { - ok( $('calculation', this).text() == '5-2', 'Check for XML' ); - ok( $('result', this).text() == '3', 'Check for XML' ); - }); - start(); - }); -}); - -test("$.ajaxSetup({timeout: Number}) - with global timeout", function() { - stop(); - - var passed = 0; - - $.ajaxSetup({timeout: 1000}); - - var pass = function() { - passed++; - if ( passed == 2 ) { - ok( true, 'Check local and global callbacks after timeout' ); - $('#main').unbind("ajaxError"); - start(); - } - }; - - var fail = function(a,b,c) { - ok( false, 'Check for timeout failed ' + a + ' ' + b ); - start(); - }; - - $('#main').ajaxError(pass); - - $.ajax({ - type: "GET", - url: url("data/name.php?wait=5"), - error: pass, - success: fail - }); - - // reset timeout - $.ajaxSetup({timeout: 0}); -}); - -test("$.ajaxSetup({timeout: Number}) with localtimeout", function() { - stop(); - $.ajaxSetup({timeout: 50}); - - $.ajax({ - type: "GET", - timeout: 5000, - url: url("data/name.php?wait=1"), - error: function() { - ok( false, 'Check for local timeout failed' ); - start(); - }, - success: function() { - ok( true, 'Check for local timeout' ); - start(); - } - }); - - // reset timeout - $.ajaxSetup({timeout: 0}); -}); - -test("$.ajax - simple get", function() { - expect(1); - stop(); - $.ajax({ - type: "GET", - url: url("data/name.php?name=foo"), - success: function(msg){ - ok( msg == 'bar', 'Check for GET' ); - start(); - } - }); -}); - -test("$.ajax - simple post", function() { - expect(1); - stop(); - $.ajax({ - type: "POST", - url: url("data/name.php"), - data: "name=peter", - success: function(msg){ - ok( msg == 'pan', 'Check for POST' ); - start(); - } - }); -}); - -test("ajaxSetup()", function() { - expect(1); - stop(); - $.ajaxSetup({ - url: url("data/name.php?name=foo"), - success: function(msg){ - ok( msg == 'bar', 'Check for GET' ); - start(); - } - }); - $.ajax(); -}); - -test("custom timeout does not set error message when timeout occurs, see #970", function() { - stop(); - $.ajax({ - url: "data/name.php?wait=10", - timeout: 500, - error: function(request, status) { - ok( status != null, "status shouldn't be null in error handler" ); - equals( "timeout", status ); - start(); - } - }); -}); - -} - -//} |