What about using the success callback of the JSONP call to initiate the location.href? Something like:
$('a').click(function() { var href = $(this).attr('href'); $.ajax({ url: 'http://example.com/jsonpmethod?callback=?', dataType: 'jsonp', success: function(data) { // do whatever with json encoded data location.href = href; } }); return false; }); On Jan 8, 2008 8:06 PM, Glen Lipka <[EMAIL PROTECTED]> wrote: > I think my thought process on this was messed up anyway. > Here is the use situation. We are using JSONP to send activity on pages > to avoid cross-site scripting problems. One of those activities is clicking > on a link. > > The problem is that the JSONP is asynchronous so that when the link is > clicked, the page unloads before the JSONP has a chance to do it's thing. > > What is the best way of allowing the JSONP to do it's thing and pause the > unload of the page long enough for it to work? > > Glen > > > > On Jan 8, 2008 1:37 PM, Benjamin Sterling < > [EMAIL PROTECTED]> wrote: > > > Glen, > > I have never done it, but I say a while back that you can use the > > jQuery.extend method to overwrite a default method. I will see if I can > > dig that up, but that may point you in the right direction in the mean time. > > > > > > > > On 1/8/08, Glen Lipka <[EMAIL PROTECTED]> wrote: > > > > > > Right now in 1.2.1 the JSONP method uses an asynchronous call to do > > > it's thing. > > > This sometimes causes a problem when we are sending a call about a > > > "click" event on a link. The page unloads before the JSONP is finished. > > > > > > Changing it to be optional (async or synchronous) helps fix that > > > problem. > > > > > > Code we used inside jQuery (with a param call to .ajax) > > > > > > /* If the request is not async, we need to wait for the script to l oad > > > before returning. */ > > > else if (!s.async) { > > > var done = false; > > > // Attach handlers for all browsers > > > script.onload = script.onreadystatechange = function(){ > > > if ( !done && (!this.readyState || > > > this.readyState == "loaded" || this.readyState == "complete") > > > ) { > > > } > > > }; > > > } > > > > > > QUESTION: Putting this directly into our copy of jQuery is probably a > > > bad idea. *How can this be turned into a plugin?* > > > > > > Thanks much, > > > > > > Glen > > > > > > > > > > > -- > > Benjamin Sterling > > http://www.KenzoMedia.com > > http://www.KenzoHosting.com > > http://www.benjaminsterling.com > > > -- -- Scott Trudeau scott.trudeau AT gmail DOT com http://sstrudeau.com/ AIM: sodthestreets