jQuery getScript возвращает исключение ошибки разбора - PullRequest
5 голосов
/ 18 февраля 2012

Я пытаюсь загрузить два сценария с помощью функции $.getScript для получения сценария Google Map, затем после загрузки я получаю другой сценарий (goMap), который позволяет легко апплетам картыбыть сделанным.

Однако при загрузке первый сценарий получения API Google Map является хорошим, затем второй сценарий возвращает ошибку разбора и показывает следующее:

TypeError: 'undefined'не является конструктором'

Тем не менее, я не знаю, откуда это ссылка или какая строка, я думаю, что он должен пытаться выполнить геокодер для этого файла (первая строка после (function($){:

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

Вот мой код:

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

Я попытался изменить настройки AJAX для установки async на false, но это совсем не помогло.

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Ошибка вызвана тем, что API Карт Google ожидает загрузки в голове, используя <script src="http://maps.google.com/maps/api/js?sensor=true"></script>.

Если вы не можете сделать это по какой-то причине, все еще есть надежда. API Карт Google не работает, потому что он использует document.write для добавления зависимости на страницу. Чтобы заставить код работать, вы можете переписать собственный метод document.write.

Демо: 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');
});
0 голосов
/ 19 февраля 2012

@ lolwut Попробуйте

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

Если это работает, то вы относительный путь .. / js / gomap.js неверно!

...