#8464 closed bug (duplicate)
jQuery ajaxSetup fails using a context that includes circular references
Reported by: | Ralf Kahlert | Owned by: | jaubourg |
---|---|---|---|
Priority: | low | Milestone: | 1.next |
Component: | ajax | Version: | 1.5.1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Options of an ajax request are prepared through the ajaxSetup method, which uses jQuery.extend to create an independent instance. Unfortunately the given context property is also recursively cloned, although it gets discarded right afterwards.
Despite the fact that there might be a lot of unnecessary cloning going on, jQuery.extend does not know how to handle circular references. IE opens a stack overflow alert, Firefox informs about a too many recursions, Webkit just aborts the script path and continues like nothing happened.
Code highlighting:
var obj = new Object(); var obj2 = new Object(); obj.myref = obj2; obj2.myref = obj; var newObj = { }; var s = jQuery.extend(true, {}, newObj, obj);
For now we suppressed deep cloning by adding a property "nodeType" to our context classes, which makes them look like DOM objects (at least for jQuery.isPlainObject).
Change History (7)
comment:1 Changed 13 years ago by
Component: | unfiled → core |
---|---|
Owner: | set to jaubourg |
Priority: | undecided → low |
Status: | new → assigned |
comment:2 Changed 13 years ago by
For now ajaxSetup should not clone objects that will be discarded.
For the extend method it might just be a documented limitation, as deep cloning for object graphs requires a build cache/more complex implementation.
comment:3 Changed 13 years ago by
Component: | core → ajax |
---|---|
Milestone: | 1.next → 1.6 |
Perhaps we could remove .context
before the extend, then put it back?
comment:4 Changed 12 years ago by
simple workaround:
context: null, success: function (data) {
yourFunctionHere.call(yourContextHere, data);
},
comment:5 Changed 12 years ago by
Milestone: | 1.6 → 1.next |
---|
comment:6 Changed 12 years ago by
Resolution: | → duplicate |
---|---|
Status: | assigned → closed |
I'll close this one as a dup since the later one has a patch.
The problem lies in extend actually.