2009-07-10 61 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> 
相關問題