Domanda

Sto cercando di caricare due script con il $.getScript funzione di ottenere lo script di Google Map, quindi dopo che viene caricato, ottengo un altro script (goMap) che rende le applet di mappe facilmente da realizzare.

Tuttavia, quando è stato caricato, il primo script per ottenere API di Google Map è buono, quindi il secondo script restituisce un errore di analisi e mostra questo:

TypeEerror: "Undefined" non è un costruttore "

Eppure, non so da dove si riferisca da o da quale riga, penso che debba provare a eseguire il geocoder su questo file (prima riga dopo (function($){:

http://www.pittsss.lv/jquery/gomap/js/jquery.gomap-1.3.2.js

Ecco il mio codice:

$.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');
});

Ho provato a modificare le impostazioni AJAX su async a false, ma non ha aiutato affatto.

È stato utile?

Soluzione

L'errore è causato dal fatto che l'API di Google Maps prevede di essere caricata nella testa, utilizzando <script src="http://maps.google.com/maps/api/js?sensor=true"></script>.

Se non puoi farlo per qualche motivo, c'è ancora speranza. L'API di Google Maps non funziona, perché utilizza document.write Per iniettare una dipendenza nella pagina. Per far funzionare il codice, puoi sovrascrivere il nativo document.write metodo.

Demo: 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');
});

Altri suggerimenti

@lolwut prova

$.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');
});

Se questo funziona, allora sei un percorso relativo ../js/gomap.js è sbagliato!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top