:) in effect i've investigated but i'm not a guru of js so i need some help ... thanks.
last but not least :D can you explain this code: self[callback] = window[callback]; window[callback] = (function(callback){ return function(data){ (window[callback] = self[callback])(data); delete self[callback]; clearTimeout(timer); }; })(callback); On 30 Gen, 23:57, Ricardo Tomasi <ricardob...@gmail.com> wrote: > Ah, an oversight of mine. I forgot to add the parameter when rewriting > the callback. > > Fixed as you can see athttp://jsbin.com/eliwu > > Never use someone else's code without inspection ;) > > On Jan 30, 4:34 pm, Stefano Corallo <stefan...@gmail.com> wrote: > > > On 30 Gen, 19:25, Ricardo Tomasi <ricardob...@gmail.com> wrote: > > > > We can't access the success function of the $.ajax call without > > > messing with jQuery source code, because the vars that name it are > > > inside the jQuery function scope. > > > ok > > > > In JSONP, the JSON object is passed as an argument to the callback > > > function. In the example I posted: > > > > jsonFlickrFeed = function(data){ //do something with data }; > > > i've tried but data is always undefined,take a look: > > >http://jsbin.com/ajimu/edit > > > > On Jan 30, 7:28 am, Stefano Corallo <stefan...@gmail.com> wrote: > > > > > On 28 Gen, 17:03, Ricardo Tomasi <ricardob...@gmail.com> wrote: > > > > > > It isn't possible to have error/success callbacks for JSONP. You can't > > > > > cancel the request either. Once you add a <script> tag to the head, > > > > > the browser fires a GET request and it can't be interrupted - even if > > > > > you remove the script before the response comes, the script will still > > > > > run. > > > > > ok. got it! > > > > > > (the only event that fires on the script tag is 'onload', but it only > > > > > tells you if the content has successfully loaded, not the opposite. > > > > > There is no way to know if an error happened) > > > > > > Also, you're misunderstanding the way JSONP works - there is no need > > > > > for a 'success' function, that is the callback function which will be > > > > > called when the response is loaded. Thats 'jsonFlickerFeed' in my > > > > > example. > > > > > Ok i've understood how jsonp work, but there's something that i can't > > > > understand. > > > > I try to explain better i can (sorry for my bad english) > > > > > 1)Using the $.ajax method, an example: > > > > $.ajax({ > > > > type: methodType, > > > > url: theURL, > > > > data: params, > > > > dataType:"jsonp", > > > > success: function(data){ > > > > console.log("onClick success"); > > > > } > > > > }); > > > > > in the jquery core is built a temporary jsonp function to handle the > > > > data returned by the server, if the succes function is defined the > > > > temporary function call the succe function and pass the returned > > > > data ... specifically at line 3314 of the jquery.1.3.1.js : > > > > > // Handle JSONP-style loading > > > > window[ jsonp ] = function(tmp){ > > > > data = tmp; > > > > success(); > > > > complete(); > > > > // Garbage collect > > > > window[ jsonp ] = undefined; > > > > try{ delete window[ jsonp ]; } > > > > catch(e){} > > > > if ( head ) > > > > head.removeChild( script ); > > > > }; > > > > > the tmp is the data returned by the server. > > > > > Now in your example you use the jsonFlickrFeed function but without > > > > handling the returned data from the server: > > > > > jsonFlickrFeed = function(){ alert('flickr loaded'); }; > > > > $.jsonp({ > > > > url: 'http://api.flickr.com/services/feeds/photos_public.gne? > > > > tags=hackdayindia&lang=en-us&format=json&callback=jsonFlickrFeed', > > > > timeout: 10, > > > > onTimeout: function(url){ console.error('jsonp script timed out: > > > > '+url) } > > > > > }); > > > > > how to access the data returned from the server? How to modify the > > > > $.jsonp function to call the success function defined and pass in the > > > > data returned from the server ... this is sure possible case jquery in > > > > $.ajax call do it, but i don't know how :-/ > > > > > Many thanks, really! > > > > > I hope i've been clear, sorry for my english!