jQuery getScript返回一个解析错误异常

时间:2012-02-18 17:57:53

标签: jquery ajax google-maps getscript

我正在尝试使用获取Google Map脚本的$.getScript功能加载两个脚本,然后加载后,我会得到另一个脚本(goMap),可以轻松制作地图小程序

然而,在加载时,第一个获取Google Map API的脚本是好的,然后第二个脚本返回一个解析错误并显示:

  

TypeError:'undefined'不是构造函数'

然而,我不知道引用的位置或哪一行,我认为必须尝试在此文件上执行Geocoder((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 个答案:

答案 0 :(得分:4)

错误的原因是Google Maps API希望使用<script src="http://maps.google.com/maps/api/js?sensor=true"></script>加载到头部。

如果由于某种原因你不能这样做,那仍然有希望。 Google Maps API不起作用,因为它使用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');
});

答案 1 :(得分:0)

@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 是错误的!