2014-04-10 85 views
0

所以我在從xml文檔創建一個變量到javascript函數時遇到了一些麻煩。它的基本問題是我創建變量infoX與從xml文件收集的一些信息。然後嘗試獲取該infoX變量,並將其用於Google地圖片段中,作爲填充Google地圖中信息窗口的contentString變量。繼承人的鏈接:http://bit.ly/1eekyPw從xml到javascript的變量

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" language="javascript"></script> 
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> 
</head> 
<body> 

<!--GMAP GOES HERE --> 
<div id="map" style="width:300px; height: 200px"></div> 


<script> 
var infoX = ''; 
$(document).ready(function(){ 

var buildID= '0'; 

    $.ajax({ 
    type: "GET", 
    url: "buildings.xml", 
    dataType: "xml", 
    success: function(xml){ 
    $(xml).find('marker[id='+buildID+']').each(function(){ 
     sname = $(this).attr('name'); 
     simage = $(this).attr('image'); 
     sdescription = $(this).attr('description'); 
     infoX = '<div id="content"><div id="siteNotice"></div><h1 id="firstHeading" class="firstHeading">'+sname+'</h1><div id="bodyContent"><img src="'+simage+'" style="float:left" />'+sdescription+'</div></div>'; 
    }); 
    }, 
    error: function() { 
    alert("An error occurred while processing XML file."); 
    } 
    }); 

// This example displays a marker at the center of Australia. 
// When the user clicks the marker, an info window opens. 


function initialize() { 

    var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
    var mapOptions = { 
    zoom: 4, 
    center: myLatlng 
    }; 

    var map = new google.maps.Map(document.getElementById('map'), mapOptions); 

    var contentString = infoX; 

    var infowindow = new google.maps.InfoWindow({ 
     content: infoX 
    }); 

    var marker = new google.maps.Marker({ 
     position: myLatlng, 
     map: map, 
     title: 'Uluru (Ayers Rock)' 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
    infowindow.open(map,marker); 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize()); 
}); 
</script> 
</body> 
</html> 

提前感謝!

+0

會發生什麼?你有錯誤嗎?發佈任何錯誤。此外,「這是我的代碼和我想要的,修復它」是模糊的 - 嘗試在你的問題和你不清楚的問題上進行更具體的討論。 –

+0

對不起,我沒有收到任何錯誤,但goolge地圖上的信息框是空白的。如果我在螢火蟲中檢查頁面,所有變量都會被創建並且具有它們應該具有的內容,但由於某些原因,它們不會進入函數。它可能是一個加載時間或滯後的事情? –

+0

「他們沒有進入功能」 - 你能更具體嗎?請更新問題,以便任何人都可以閱讀這個問題並獲得整個故事。 –

回答

1

你是對的,它假設它與加載時間有關,但與頁面加載時間和Ajax加載時間無關。問題的發生是因爲在ajax請求返回一個使infoX的值爲''的值之前調用了initialize函數;爲了測試這個,我查看了你的頁面,並在ajax請求成功回調中的chrome開發者工具中放置了一個斷點,然後在initialize()內部使用了infoX,在initialize()內部的斷點停止執行,然後執行被停止ajax成功回調。由於在完成ajax請求之前使用了infoX,因此它是在腳本頂部初始化的值。如果initialize在ajax請求成功的時候被調用,那麼值應該被設置。

+0

令人驚歎,效果很好。謝謝。 –