2009-07-08 14 views
5

Estoy intentando cargar un JavaScript externo utilizando getScript de jQuery(), así:jQuery.getScript: variable de datos de devolución de llamada definido

$.getScript("http://api.recaptcha.net/js/recaptcha_ajax.js", function(data) { 
    window.alert(data); 
}); 

pero como muestra la ventana de alerta, la variable de datos en la devolución de llamada la función no está definida, a diferencia de lo prometido en http://docs.jquery.com/Ajax/jQuery.getScript#urlcallback.

¿Alguien sabe por qué esto podría ser?

Gracias.

+0

Recibo el mismo error, he preguntado acerca de IRC pero nadie parece saber cuál es el puntaje. Estoy esperando una respuesta en la lista de correo. – YHVH

Respuesta

1

Sí, está cargando el script pero, curiosamente, la variable de datos no está definida. Pero intenté acceder a la variable (RecaptchaStr_en) desde el script desde el sitio remoto y está definido.

$.getScript("http://api.recaptcha.net/js/recaptcha_ajax.js", function(data) { 
     window.alert(data); 
     alert($(RecaptchaStr_en)); 
    }); 
+0

¿Encontraste el problema? Estoy teniendo lo mismo. Parece ser una condición de carrera en algún lugar – Instine

3

Si nos fijamos en la fuente a getScript (línea 3338 en jQuery-1.3.2.js), se puede ver que la documentación está mal aquí. El parámetro de datos es para enviar datos a el servidor en la cadena de consulta, que jQuery asume que no necesitará cargar scripts; se usa en, por ejemplo, getJSON. getScript solo codifica los datos para null y automáticamente evalúa el script recuperado por usted.

Por lo tanto, la mala noticia es que la documentación es incorrecta. La buena noticia es que probablemente solo quiera evaluar el script de todos modos, por lo que probablemente ni siquiera necesite la devolución de llamada.

1

sólo tiene que cargar las secuencias de comandos con rutas relativas decir /Script/MyScript.js rhather que http://mywebsite.com/Script/MyScript.js

Para C pirata, no hay nada malo acerca de la documentación, que funciona como se esperaba. XMLHttpRequest no permite solicitudes de dominio cruzado, y parece que el parámetro de datos no está definido incluso si coloca toda la ruta en su mismo dominio.

0

Cuando define el tipo de datos como script, la solicitud no se realiza utilizando XMLHttpRequest sino más bien la etiqueta, por lo que los datos y los objetos de éxito en la devolución de llamada no están disponibles.

+0

¿Se puede agregar una referencia? @Alabama. –

Cuestiones relacionadas