2011-02-08 76 views
0

我試圖通過jQuery來加載XML數據的獲取方法。該XML源位於以下網址: http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta跨域XMLHTTPRequest的錯誤

當我運行在瀏覽器下面的代碼,我得到一個錯誤:

XMLHttpRequest cannot load http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta . Origin http://173.203.89.156 is not allowed by Access-Control-Allow-Origin.

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<title>Bus Map</title> 
<style type="text/css"> 
    html { height: 100% } 
    body { height: 100%; margin: 0px; padding: 0px } 
    #map_canvas { height: 100% } 
</style> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"> 
</script> 
<script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"> 
</script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     var myLatlng = new google.maps.LatLng(42.3966499, -71.12188); 
     var myOptions = { 
      zoom: 14, 
      center: myLatlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
     $.get('http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta', function(stops) { 
      alert(stops[0]);                          
     }) 
    }); 

</script> 
</head> 

<body> 
<div id="map_canvas" style="width: 100%; height: 100%"></div> 
</body> 
</html> 

是這一領域斷然阻止所有的跨域XMLHTTPRequests,還是有繞過這個錯誤?

回答

2

瀏覽器塊跨域XHR時。有些東西叫做Same-Origin-Policy,你需要遵循xhrs,或者你需要使用替代方法,如服務器端代理或者jsonp(如果它是由應用程序提供的話)。

+0

所以每次我做一個XHR請求以及引薦域和端口的時間必須是一樣的嗎?這是一個安全功能嗎? – Adam 2011-02-08 20:09:26

+0

@adam,是的,其中包括協議 – hvgotcodes 2011-02-08 20:11:17

1

如果你需要解決同域問題(像許多API一樣),請查看JSONP。我對jQuery並不熟悉,但如果URL有回調參數,它似乎會與getJSON進行JSONP調用。