[jQuery] Re: jQuery $.ajax and dataType

2009-04-10 Thread Mike Nichols

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


[jQuery] Re: jQuery $.ajax and dataType

2009-04-10 Thread Snef

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


[jQuery] Re: jQuery $.ajax and dataType

2009-04-10 Thread Snef

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


[jQuery] Re: jQuery $.ajax and dataType

2009-04-10 Thread Mike Nichols

great glad it helped. I'll look at 1.3.2 to modify

On Apr 10, 4:01 pm, Snef sne...@gmail.com wrote:
 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-aut...

  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