2015-01-07 21 views
0

由於某些原因,美國國家氣象局的xml站點不適用於我。當我說「不起作用」時,我的意思是我已經嘗試了XMLHttpRequest和ajax來從http://w1.weather.gov/xml/current_obs/KSFO.xml獲取xml數據,以編寫顯示當前天氣狀況的腳本。這是我的代碼:國家氣象服務javascript jquery ajax 0錯誤

(function(){ 

updateWeather(); 
})(); 

function updateWeather(){ 

var url= "http://w1.weather.gov/xml/current_obs/KSFO.xml"; 

    $.ajax({ 
url: url, 
dataType: 'xml', 

error:function(xhr){ 
document.getElementById("weatherbox").innerHTML="error" +xhr.status+xhr.statusText;}, 
success:function(result,status,xhr){ 


document.getElementById('weatherbox').innerHTML="success"; 

} 
}); 

} 

我知道,你通常無法請求信息跨域,但NWS網站使用Ajax調用說,它向公衆和IM開放,因爲它好像沒有其他人有這個問題它不能是一個跨域錯誤,但我已經嘗試在ajax調用中使用crossDomain: true。我試圖使URL「https:....」,而不是什麼都沒做。我已經嘗試在ajax調用中指定type:'GET'。每次運行腳本時,它都會返回error0error。有沒有人有任何想法?一個Ajax調用的工作實現會更好,我一直在這個工作幾天,這讓我瘋狂,我似乎無法檢索這些數據。

作爲對第一條評論的迴應,我在之前看過,但它似乎是SOAP服務用於請求數據包,比如「SF從1月到9月的天氣」或其他內容,從這個外觀:

「當前天氣狀況的XML饋送 此頁面提供了美國和美國地區約1,800個地點觀察到的當前天氣狀況的訪問情況,提供了兩種用於計算機到計算機數據傳輸的文件格式。列表以幫助自動傳播這些信息更多關於RSS和XML格式/信息源的信息歡迎發表評論和反饋有關此產品的更多信息,請通過此產品描述離子文件。

選擇一個州或地區來定位XML氣象觀測饋送可用:

選擇之上的國家/區域列出觀測站的顯示列表中的所有可用電臺的索引列表是XML(900KB)可得:XML格式「

」關於XML NWS提供採用XML標記格式在用於填充數據庫的自動程序,網頁上或其他類似的應用程序的顯示信息的信息的分析來幫助每小時的天氣觀測。這種格式不能與RSS混淆,不能被RSS閱讀器和聚合器閱讀。這些文件提供比RSS提要更易於解析的字符串。 RSS和XML Feed都提供了圖標圖像的URL。此外,XML標籤中可能出現的短語列表和建議的圖標可用。 http://w1.weather.gov/xml/current_obs/

我應該能夠只使用XML從我上面貼檢索當前的鏈接:要從該站點訪問這些飼料,選擇在列的狀態,然後最後一個XML鏈接「

。觀察數據,而不是像一個人用來計算或預測預測趨勢,並且似乎SOAP請求服務實際上不適用於我的目的,因爲我不能僅僅訂購一個數據點。

回答

0

您可以使用JSONP請求以避免獲得CORS錯誤,但是這個SOAP服務不會包含腳本中的數據,只要閱讀文檔here。必須創建一個客戶端。 NWS還提供了一個RESTful API。閱讀教程here

0

如果你可以使用PHP代理,然後看http://www.webresourcesdepot.com/cross-domain-javascript-with-simple-php-proxy/的解決方案,並在pastebin

相應的代碼鏈接總之,該解決方案採用中介,坐在同一位置的遠程站點你的JS代碼。您可以通過將url參數設置爲您的目標來調用代理。比方說,你救了代理代碼文件名「weatherproxy.php」和你的網絡服務器支持PHP模塊和捲曲的支持,那麼你會設置你的變量

var url = 'weatherproxy.php?url=http://w1.weather.gov/xml/current_obs/KSFO.xml'; 

沒有其他選擇,你的代理,成功它將返回一個JSON的形式:

{ status: { http_code: 200 }, contents: "your xml contents as a string" } 

從那裏你將不得不調用一個XML解釋器'內容'。或者,您可以提供給該代理以返回原始xml的參數。參數是'& mode = native'。我不確定那個jQuery是否可以正確處理返回的XML。

玩得開心探索代碼。