[jQuery] Re: jQuery $.ajax and dataType
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
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
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
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