2009-07-10 59 views
1

我遇到与使用JQuery加载外部JavaScript的问题。当我尝试载入这个外部文件每次,浏览器窗口变成空白,在Firefox中它会重定向到这样的:外部JavaScript的JQuery AJAX加载导致浏览器重定向到新位置

wyciwyg:// 40/http://mydomain.com/myfile.html

我所要做的,是载入walkscore谷歌地图成一个div的页面上。我已经尝试使用$ .get()方法,.load(),$ .getScript()和$ .requireScript()jquery插件,除了一种情况,当我将alert()放在$ .get () 方法。在这种情况下,浏览器不会在任何地方重定向,而且会在页面上显示出步行地图。

这是我在头节脚本:

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script type="text/javascript"> 

    function loadWalkScore() { $.get("http://www.walkscore.com/tile/show-tile.php?wsid=87439b0626c9eaeacfd6d8d5598afc13",null,null,"script"); } </script> 

脚本在页面的正文:

<div id="contentArea" style="margin: 20px 0px 10px 10px; border: 1px solid #CCC;"> 

<script type="text/javascript"> 
    var ws_lat = "40.710318"; 
    var ws_lon = "-74.016553"; 
    var ws_width = "630"; 
    loadWalkScore(); 
</script> 

</div> 

也请参阅我有所有的例子(仅第一个作品):

// 1. $ .get() - wor king示例,在$ .get()方法后立即有警报

websvit。 COM /标签/ walkscore与 - alert.html

// 2. $获得() - 完全一样,上面没有警告,不起作用

websvit。 COM /标签/ walkscore-get.html

// 3 .load() - 与walkscore JS加载HTML文件,does not工作

websvit。 COM /标签/ walkscore-load.html

// 4. $ .getScript() - 不工作

websvit。 COM /标签/ walkscore-getScript加入-external.html

// 5. $ .getScript()在本地保存walkscore JS,不工作

websvit。 COM /标签/ walkscore-getScript加入-local.html

// 6. $ .requireScript() - 使用jQuery插件,does not工作

websvit。 com/tabs/walkscore-get-plugin.html

+0

您正在尝试使用AJAX加载另一个JavaScript脚本? – 2009-07-10 21:15:19

+1

使用萤火虫检查服务器响应。 – 2009-07-10 21:20:34

回答

1

我有一个解决我的问题。我找到了一种方法来避免使用ajax来加载跳数的javascript,但要使用简单的iframe。如果有人会遇到类似的问题,我在这里发布代码。

var ws_lat = "40.710318"; 
    var ws_lon = "-74.016553"; 
    var ws_width = "630"; 
    var ws_height = "300"; 
    var ws_iframe_css_final = "border: 0"; 

    var ws_params = "wsid=87439b0626c9eaeacfd6d8d5598afc13"; 
    ws_params += "&lat=" + ws_lat + "&lng=" + ws_lon; 

    $("#walkscore_map").html('<iframe src="http://www.walkscore.com/serve-tile.php?' + ws_params + '" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" scrolling="no" width="' + ws_width + 'px" height="' + ws_height + 'px" style="' + ws_iframe_css_final + '"></iframe>'); 
1

问题是,他们的方式是编写WalkScore脚本,您的ajax调用将不得不同步运行(而不是异步)才能运行。这就是alert()使其工作的原因。

翻翻你的代码,并通过调用WalkScore返回的脚本去后,我发现使它的工作方式。您可以使用$ .getScript进行回调,并将iframe附加到contentArea DIV。 WalkScore脚本为此使用document.write()。

将以下脚本复制到您的head标签。确保wsid对你的域名是正确的,否则你会得到一个空白页面。删除当前位于DIV中的脚本标记。

<script type="text/javascript"> 
    var ws_lat = "40.710318"; 
    var ws_lon = "-74.016553"; 
    var ws_width = "630"; 
    $(function(){ 
     $.getScript("http://www.walkscore.com/tile/show-tile.php?wsid=87439b0626c9eaeacfd6d8d5598afc13", function(){    
      $('<iframe src="http://www.walkscore.com/serve-tile.php?' + ws_params 
            + '" marginwidth="0" marginheight="0" vspace="0" hspace="0"' 
            + ' allowtransparency="true" frameborder="0" scrolling="no" width="' 
            + ws_width + 'px" height="' + ws_height + 'px" style="' + ws_iframe_css_final + '"></iframe>') 
            .appendTo("#contentArea"); 
     }); 
    }); 
</script> 
相关问题