Exactly what I also want! :)

Think it needs minor update for 1.3.2 (different way of eval with json
i think)

Thanx!

PS. Strange this was not included in jQuery itself.....

Mike Nichols schreef:
> I posted on this and submitted on the ticket tracker to do this but it
> seems to have been denied (it was abandoned).
> There was a suggestion made to use the dataFilter but that misses the
> point since the xhr header doesn't get included as a parameter.
> To work around this I have a little patch I add just after my jquery
> include. You can see it here :
> http://devlicio.us/blogs/mike_nichols/archive/2008/10/14/enabling-auto-detection-of-response-type-in-jquery.aspx
>
>
>
> On Apr 10, 3:39 pm, Snef <sne...@gmail.com> wrote:
> > Well, is it a good suggestion?
> >
> > Or maybe it's possible to override (or extends) tjhe current ajax
> > implementation?
> >
> > On 10 apr, 16:45, Snef <sne...@gmail.com> wrote:
> >
> > > Hi,
> >
> > > When using the $.ajax functionality i came across some things.
> >
> > > You have to set the dataType option in order to get the correct data
> > > at success(). Now I have an ajax request that can return some html or
> > > json. Both use the correct content-type header.
> >
> > > Now I see in the httpData function of jQuery that it will get xml and
> > > in other occasions it will use the set dataType. Why not a check on
> > > content-type?
> >
> > > In the httpData is a part like:
> >
> > >                 // The filter can actually parse the response
> > >                 if( typeof data === "string" ){
> > >                         // 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 = window["eval"]("(" + data + ")");
> > >                 }
> >
> > > Maybe it is possible to change it to:
> >
> > >                 // The filter can actually parse the response
> > >                 if( typeof data === "string" ){
> > >                         // If the type is "script", eval it in global 
> > > context
> > >                         if ( type == "script" || ( !type && 
> > > ct.indexOf("javascript") >=
> > > 0 ) )
> > >                                 jQuery.globalEval( data );
> >
> > >                         // Get the JavaScript object, if JSON is used.
> > >                         if ( type == "json" || ( !type && 
> > > ct.indexOf("json") >= 0 ) )
> > >                                 data = window["eval"]("(" + data + ")");
> > >                 }
> >
> > > (please check the httpData in jquery.1.3.2.js!)
> >
> > > In this way, when dataType is omitted, it'll take a look at the
> > > returned content type.
> >
> > > Offcourse, this is just a quick rewrite and maybe not even correct but
> > > with some simple tests it worked well.
> >
> > > Snef

Reply via email to