2010-11-12 9 views
7

Mi jQuery es a continuación:no puedo dejar una petición AJAX usando jQuery y abortar() la función

var x = $.ajax({ 
    dataType: "jsonp", 
    url: "https://ajax.googleapis.com/ajax/services/search/images?q=google&v=1.0", 
    success: function(msg){ 
     alert("Jsonp data: " + msg); 
    } 
}); 

alert(x); // x is undefined 
// x.abort()​​ 

Puede probar el código aquí: http://jsbin.com/iyile3/2/edit

quiero detener este ajax solicitar y detener la función de éxito de esta solicitud ajax.

Pero lo que obtengo es que "x" no está definido, creo que no detiene esta solicitud de ajax y su función de éxito.

Entonces, ¿alguien puede ayudarme?

¡Muchas gracias!

Respuesta

9

Bueno, eso tiene sentido.

A jsonp llamada no es un XMLHttpRequest ordinario (que normalmente devuelve .ajax()). No funcionaría de esa manera ya que no puede dividir el same origin policy.

JSON-Padding funciona con la inserción dinámica de etiquetas de script. Básicamente, jQuery solo crea una etiqueta <script> en su sitio y carga los datos sobre eso. No XHR objeto en absoluto.

No creo que haya una forma de cancelar anticipadamente ese tipo de solicitud, pero espero que alguien me corrija aquí si me equivoco.

+0

Muchas gracias jAndy! – rqqfccsa

+0

Sí. No hay forma de matar una solicitud Jsonp utilizando la función abort(). Pero creo que he solucionado este problema usando la función serTimeout() de JavaScript. Quizás alguien también use la función clearTimeout(). Eso es bueno. Pero en mi caso, solo uso la función setTimeout para solucionar el problema. – rqqfccsa

4

Creo que el documentation puede ser un poco engañoso en este caso. No se realiza ninguna solicitud AJAX cuando se utiliza JSONP. En este caso, la función ajax devuelve un valor undefined en lugar del objeto XMLHTTPRequest.

+0

Muchas gracias Anurag! – rqqfccsa

Cuestiones relacionadas