*
* @test stop(); // check if load can be called with only url
* $('#first').load("data/name.php");
- * setTimeout(function() {
+ * $.get("data/name.php", function() {
* ok( $('#first').text() == 'ERROR', 'Check if load works without callback');
* start();
- * }, 500);
+ * });
+ *
+ * @test stop();
+ * foobar = undefined;
+ * foo = undefined;
+ * var verifyEvaluation = function() {
+ * ok( foobar == "bar", 'Check if script src was evaluated after load' );
+ * start();
+ * };
+ * $('#first').load('data/test.html', function() {
+ * ok( $('#first').html().match(/^html text/), 'Check content after loading html' );
+ * ok( foo == "foo", 'Check if script was evaluated after load' );
+ * setTimeout(verifyEvaluation, 600);
+ * });
*
* @name load
* @type jQuery
if ( status == "success" || !ifModified && status == "notmodified" ) {
// Inject the HTML into all the matched elements
- self.html(res.responseText).each( callback, [res.responseText, status] );
-
- // Execute all the scripts inside of the newly-injected HTML
- jQuery("script", self).each(function(){
- if ( this.src )
- jQuery.getScript( this.src );
- else
- eval.call( window, this.text || this.textContent || this.innerHTML || "" );
- });
+ self.html(res.responseText)
+ // Execute all the scripts inside of the newly-injected HTML
+ .evalScripts()
+ // Execute callback
+ .each( callback, [res.responseText, status] );
} else
callback.apply( self, [res.responseText, status] );
*/
serialize: function() {
return jQuery.param( this );
+ },
+
+ evalScripts: function() {
+ return this.find('script').each(function(){
+ if ( this.src )
+ // for some weird reason, it doesn't work if the callback is ommited
+ jQuery.getScript( this.src, function() {} );
+ else
+ eval.call( window, this.text || this.textContent || this.innerHTML || "" );
+ }).end();
}
});
* }
* )
*
+ * @test stop();
+ * $.get('data/dashboard.xml', function(xml) {
+ * var content = [];
+ * $('tab', xml).each(function() {
+ * content.push($(this).text());
+ * });
+ * ok( content[0] == 'blabla', 'Check first tab');
+ * ok( content[1] == 'blublu', 'Check second tab');
+ * start();
+ * });
+ *
* @name $.get
* @type jQuery
* @param String url The URL of the page to load.
* @cat AJAX
*/
get: function( url, data, callback, type, ifModified ) {
- if ( data.constructor == Function ) {
+ if ( data && data.constructor == Function ) {
type = callback;
callback = data;
data = null;
* start();
* });
*
+ * @test
+ * $.getScript("data/test.js");
+ * ok( true, "Check with single argument, can't verify" );
+ *
* @name $.getScript
* @type jQuery
* @param String url The URL of the page to load.
* @cat AJAX
*/
getScript: function( url, callback ) {
- jQuery.get(url, callback, "script");
+ if(callback)
+ jQuery.get(url, null, callback, "script");
+ else {
+ jQuery.get(url, null, null, "script");
+ }
},
/**
* }
* });
*
+ * @test stop();
+ * foobar = undefined;
+ * foo = undefined;
+ * var verifyEvaluation = function() {
+ * ok( foobar == "bar", 'Check if script src was evaluated for datatype html' );
+ * start();
+ * };
+ * $.ajax({
+ * dataType: "html",
+ * url: "data/test.html",
+ * success: function(data) {
+ * ok( data.match(/^html text/), 'Check content for datatype html' );
+ * ok( foo == "foo", 'Check if script was evaluated for datatype html' );
+ * setTimeout(verifyEvaluation, 600);
+ * }
+ * });
+ *
+ * @test stop();
+ * $.ajax({
+ * url: "data/with_fries.xml", dataType: "xml", type: "GET", data: "", success: function(resp) {
+ * ok( $("properties", resp).length == 1, 'properties in responseXML' );
+ * ok( $("jsconf", resp).length == 1, 'jsconf in responseXML' );
+ * ok( $("thing", resp).length == 2, 'things in responseXML' );
+ * start();
+ * }
+ * });
+ *
* @name $.ajax
* @type jQuery
* @param Hash prop A set of properties to initialize the request with.
ajax: function( type, url, data, ret, ifModified ) {
// If only a single argument was passed in,
// assume that it is a object of key/value pairs
+ var global = true;
+ var timeout = jQuery.timeout;
if ( !url ) {
ret = type.complete;
var success = type.success;
var dataType = type.dataType;
var global = typeof type.global == "boolean" ? type.global : true;
var timeout = typeof type.timeout == "number" ? type.timeout : jQuery.timeout;
- var ifModified = type.ifModified || false;
+ ifModified = type.ifModified || false;
data = type.data;
url = type.url;
type = type.type;
// Get the JavaScript object, if JSON is used.
if ( type == "json" ) eval( "data = " + data );
+
+ // evaluate scripts within html
+ if ( type == "html" ) jQuery("<div>").html(data).evalScripts();
return data;
},