* });
*
* @test stop();
- * foobar = undefined;
- * foo = undefined;
+ * window.foobar = undefined;
+ * window.foo = undefined;
* var verifyEvaluation = function() {
* ok( foobar == "bar", 'Check if script src was evaluated after load' );
+ * ok( $('#foo').html() == 'foo', 'Check if script evaluation has modified DOM');
+ * ok( $('#ap').html() == 'bar', 'Check if script evaluation has modified DOM');
* start();
* };
* $('#first').load('data/test.html', function() {
* @name load
* @type jQuery
* @param String url The URL of the HTML file to load.
- * @param Hash params A set of key/value pairs that will be sent to the server.
- * @param Function callback A function to be executed whenever the data is loaded.
+ * @param Object params A set of key/value pairs that will be sent as data to the server.
+ * @param Function callback A function to be executed whenever the data is loaded (parameters: responseText, status and reponse itself).
* @cat AJAX
*/
load: function( url, params, callback, ifModified ) {
// Execute all the scripts inside of the newly-injected HTML
.evalScripts()
// Execute callback
- .each( callback, [res.responseText, status] );
+ .each( callback, [res.responseText, status, res] );
} else
- callback.apply( self, [res.responseText, status] );
+ callback.apply( self, [res.responseText, status, res] );
}
});
return this;
return jQuery.param( this );
},
+ /**
+ * Evaluate all script tags inside this jQuery. If they have a src attribute,
+ * the script is loaded, otherwise it's content is evaluated.
+ *
+ * @name evalScripts
+ * @type jQuery
+ * @private
+ * @cat AJAX
+ */
evalScripts: function() {
return this.find('script').each(function(){
if ( this.src )
* @cat AJAX
*/
get: function( url, data, callback, type, ifModified ) {
+ // shift arguments if data argument was ommited
if ( data && data.constructor == Function ) {
type = callback;
callback = data;
data = null;
}
- // append ? + data or & + data, in case there are already params
- if ( data ) url += ((url.indexOf("?") > -1) ? "&" : "?") + jQuery.param(data);
-
- // Build and start the HTTP Request
+ // Delegate
jQuery.ajax({
url: url,
- ifModified: ifModified,
- complete: function(r, status) {
- if ( callback ) callback( jQuery.httpData(r,type), status );
- }
+ data: data,
+ success: callback,
+ dataType: type,
+ ifModified: ifModified
});
},
* @cat AJAX
*/
post: function( url, data, callback, type ) {
- // Build and start the HTTP Request
+ // Delegate
jQuery.ajax({
type: "POST",
url: url,
- data: jQuery.param(data),
- complete: function(r, status) {
- if ( callback ) callback( jQuery.httpData(r,type), status );
- }
+ data: data,
+ success: callback,
+ dataType: type
});
},
*
* (String) url - The URL of the page to request.
*
- * (String) data - A string of data to be sent to the server (POST only).
+ * (String) data - Data to be sent to the server. If converted to a query
+ * string, if not already a string. Is appended to the url for GET-requests.
*
* (String) dataType - The type of data that you're expecting back from
* the server (e.g. "xml", "html", "script", or "json").
* });
*
* @test stop();
- * foobar = undefined;
- * foo = undefined;
+ * window.foobar = undefined;
+ * window.foo = undefined;
* var verifyEvaluation = function() {
* ok( foobar == "bar", 'Check if script src was evaluated for datatype html' );
* start();
* @param Hash prop A set of properties to initialize the request with.
* @cat AJAX
*/
- //ajax: function( type, url, data, ret, ifModified ) {
ajax: function( s ) {
-
- var fvoid = function() {};
+ // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
s = jQuery.extend({
global: true,
ifModified: false,
type: "GET",
timeout: jQuery.timeout,
- complete: fvoid,
- success: fvoid,
- error: fvoid,
+ complete: null,
+ success: null,
+ error: null,
dataType: null,
data: null,
- url: null
+ url: null,
}, s);
- /*
- // If only a single argument was passed in,
- // assume that it is a object of key/value pairs
- if ( !url ) {
- ret = type.complete;
- var success = type.success;
- var error = type.error;
- var dataType = type.dataType;
- var global = typeof type.global == "boolean" ? type.global : true;
- var timeout = typeof type.timeout == "number" ? type.timeout : jQuery.timeout;
- ifModified = type.ifModified || false;
- data = type.data;
- url = type.url;
- type = type.type;
+ // if data available
+ if ( s.data ) {
+ // convert data if not already a string
+ if (typeof s.data != 'string')
+ s.data = jQuery.param(s.data)
+ // append data to url for get requests
+ if( s.type.toLowerCase() == "get" )
+ // "?" + data or "&" + data (in case there are already params)
+ s.url += ((s.url.indexOf("?") > -1) ? "&" : "?") + s.data;
}
- */
// Watch for a new set of requests
if ( s.global && ! jQuery.active++ )