2009-04-12 10 views
5

Tengo un fragmento de código como este

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"); 

El problema es que no estoy viendo asíncrono en el trabajo. "fuera de ajax" es la primera ventana emergente que tengo y "éxito" la segunda. ¿Hay algo obvio que me estoy perdiendo?

Adición de mis comentarios a la respuesta del Anothny

Mi env prueba es ganar xp sp2, FF 3.0.8/w + Firebug IE 8. v1.3.2 y JQuery. No hay nada obvio que pude encontrar del firebug.

¿Estaría dispuesto a probar el código anterior con esta url "http://pipes.yahoo.com/pipes/pipe.run?_id=1nWYbWm82xGjQylL00qv4w&_render=json&textinput1=obama&_callback=?"

+0

Prueba sin "jsonp?" Podría ser que jsonp es incompatible con async –

+0

Jason, eso no ayuda. –

+0

JSONP no utiliza AJAX técnicamente, sino que usa una etiqueta 'script' que incrusta en el HEAD del documento. Puede que no sea el único problema que tienes, pero definitivamente es un problema ... – mishac

Respuesta

6

Bueno, no se puede tener una solicitud jsonp síncrona. La forma en que se implementa jsonp es a través de un truco de etiquetas de guiones para permitir el acceso entre dominios. Entonces $ .ajax simplemente ignora el atributo async porque simplemente no puede hacer una solicitud jsonp síncrona.

Como nota al margen, debe intentar & evitar las solicitudes síncronas de ajax. Aunque al principio parecen más simples de diseño, terminan congelando navegadores en caso de retención de la red y crean una experiencia de usuario muy desagradable.