2009-04-12 10 views
5

J'ai un extrait de code comme celui-ci

var searchurl="http://mysite.com/searchpath?q=test"; 
$.ajax({ 
    type: "GET", 
    url: searchurl, 
    cache: false, 
    dataType : "jsonp", 
    async : false, 
    success: function(data){ 
     alert("success"); 
    } 
}); 
alert("outside ajax"); 

Le problème est que je ne suis pas voir async au travail. "outside ajax" est le premier popup que j'obtiens et "success" le second. Y a-t-il quelque chose d'évident qui me manque?

Ajout de mes commentaires à la réponse de Anothny

Mon env test est win xp sp2, FF 3.0.8/w Firebug + IE 8. et JQuery v1.3.2. Il n'y a rien d'évident que j'ai pu trouver sur le firebug.

Seriez-vous prêt à essayer le code ci-dessus avec cette adresse "http://pipes.yahoo.com/pipes/pipe.run?_id=1nWYbWm82xGjQylL00qv4w&_render=json&textinput1=obama&_callback=?"

+0

Essayez sans "jsonp?" Peut-être que jsonp est incompatible avec async –

+0

Jason, cela n'aide pas. –

+0

JSONP n'utilise pas AJAX techniquement, il utilise une balise 'script' qu'il intègre dans la HEAD du document. Ce n'est peut-être pas le seul problème que vous rencontrez, mais c'est définitivement un problème ... – mishac

Répondre

6

Eh bien, vous ne pouvez pas avoir une requête jsonp synchrone. La façon dont jsonp est implémentée passe par un hack de balises de script pour permettre l'accès inter-domaines. Donc $ .ajax ignore simplement l'attribut async car il ne peut simplement pas faire une requête jsonp synchrone.

En note, vous devriez essayer & d'éviter les demandes ajax synchrones. Bien qu'ils puissent sembler plus simples au début, ils finissent par geler les navigateurs en cas de rétention du réseau et créent une expérience utilisateur très désagréable.