Skip to main content

Bug Tracker

Side navigation

#11852 closed feature (notabug)

Opened June 03, 2012 09:02PM UTC

Closed November 24, 2012 10:34PM UTC

Last modified November 27, 2012 05:40PM UTC

Use context parameter in .load

Reported by: anonymous Owned by: jaubourg
Priority: low Milestone: None
Component: ajax Version: 1.7.2
Keywords: Cc: jaubourg
Blocked by: Blocking:
Description

I know this is very trivial, but it is an enhancement never the less.

The .load function (ajax) assigns this to self on line 7159.

It would be better to use the context parameter of the $.ajax function as follows and then omitting the assignment to self.

		
#!js
jQuery.ajax({
	url: url,
	type: type,
	dataType: "html",
	data: params,
	context: this,
	// Complete callback (responseText is used internally)
	complete: function( jqXHR, status, responseText ) {
		// Store the response as specified by the jqXHR object
		responseText = jqXHR.responseText;
		// If successful, inject the HTML into all the matched elements
		if ( jqXHR.isResolved() ) {
			// #4825: Get the actual response in case
			// a dataFilter is present in ajaxSettings
			jqXHR.done(function( r ) {
				responseText = r;
			});
			// See if a selector was specified
                        // (Target element is this - coming from context)
			this.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(responseText.replace(rscript, ""))

					// Locate the specified elements
					.find(selector) :

				// If not, just inject the full result
				responseText );
		}

		if ( callback ) {
			this.each( callback, [ responseText, status, jqXHR ] );
		}
	}
});

Patch: http://pastebin.com/A5cYSQKV

In case you are interested where this ''could'' have any relevance see this: http://stackoverflow.com/a/10864327/1238764

Attachments (0)
Change History (8)

Changed June 23, 2012 02:29PM UTC by dmethvin comment:1

cc: → jaubourg
component: unfiledajax
milestone: None1.8
priority: undecidedlow
status: newopen

Seems like a good idea to me ... jaubourg?

Changed June 25, 2012 04:28PM UTC by dmethvin comment:2

owner: → jaubourg
status: openassigned

Changed August 10, 2012 05:55PM UTC by dmethvin comment:3

milestone: 1.81.8.1

Changed August 27, 2012 02:04PM UTC by dmethvin comment:4

milestone: 1.8.11.9

Changed September 09, 2012 01:10AM UTC by dmethvin comment:5

type: enhancementfeature

Bulk change from enhancement to feature.

Changed November 24, 2012 10:34PM UTC by dmethvin comment:6

resolution: → notabug
status: assignedclosed

Since this would change the callbackContext of the global events fired by $.ajax I think it's better not to land it just in case some code would be confused by the change.

https://github.com/jquery/jquery/blob/67df705bf5205fa075ba6ceee2d7fd4763894a16/src/ajax.js#L358

Changed November 24, 2012 10:51PM UTC by jaubourg comment:7

Damn, it's been 6 months and I didn't answer to this one? Oo

Totally agree with dmethvin on not breaking backward compatibility here.

Changed November 27, 2012 05:40PM UTC by dmethvin comment:8

milestone: 1.9None