jQuery getcript devuelve una excepción de error de análisis
-
27-10-2019 - |
Pregunta
Estoy tratando de cargar dos scripts con el $.getScript
función de obtener el script de mapa de Google, luego, después de que se cargue, obtengo otro script (goMap
) que hace que los applets de mapas sean fácilmente para hacer.
Sin embargo, cuando se carga, el primer script de obtener la API de Google Map es buena, luego el segundo script devuelve un error de análisis y muestra esto:
TypeError: 'Undefined' no es un constructor '
Sin embargo, no sé de dónde se refiere eso o a qué línea, creo que debe estar tratando de ejecutar el geocoder en este archivo (primera línea después (function($){
:
Aquí está mi código:
$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function()
{
$.getScript('../js/gomap.js').done(function()
{
// this never gets called
alert('gomap loaded');
}).fail(function(jqxhr, settings, exception)
{
alert(exception); // this gets shown
});
}).fail(function()
{
alert('failed to load google maps');
});
Intenté cambiar la configuración de Ajax para establecer async
a false
, pero no ayudó en absoluto.
Solución
El error es causado por el hecho de que la API de Google Maps espera cargarse en la cabeza, utilizando <script src="http://maps.google.com/maps/api/js?sensor=true"></script>
.
Si no puede hacer eso por alguna razón, todavía hay esperanza. La API de Google Maps no funciona, porque usa document.write
para inyectar una dependencia en la página. Para que el código funcione, puede sobrescribir al nativo document.write
método.
Manifestación: http://jsfiddle.net/zmtmr/
var doc_write = document.write; // Remember original method;
document.write = function(s) {$(s).appendTo('body')};
$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function() {
$.getScript('../js/gomap.js').done(function() {
alert('gomap loaded');
document.write = doc_write; // Restore method
}).fail(function(jqxhr, settings, exception) {
alert(exception); // this gets shown
document.write = doc_write; // Restore method
});
}).fail(function() {
alert('failed to load google maps');
});
Otros consejos
@LolWut intenta
$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function()
{
alert(11);
$.getScript('http://www.pittss.lv/jquery/gomap/js/jquery.gomap-1.3.2.js').done(function()
{
// this never gets called
alert('gomap loaded');
}).fail(function(jqxhr, settings, exception)
{
alert(exception); // this gets shown
});
}).fail(function()
{
alert('failed to load google maps');
});
Si esto funciona, entonces eres un camino relativo ../js/gomap.js ¡Está Mal!