jquery(とくに$ .ajaxメソッド)を使用してDrupal 6モジュールを開発しています.YahooのWeather APIからRSSフィードを取得します。私は "yweather"接頭辞を持つ要素にアクセスする必要があり(JFeed経由でアクセスする方法が見つからないため)、JFeedライブラリを使用しないことに決めました。私は$ .ajaxメソッドを使用し、代わりにXMLレスポンスを解析することに決めました。私はSafariでエラーコンソールをチェックするとJavascriptはFF/IEで動作しますが、Chrome/Safariでは動作しません
function parseXml(xml) {
var atmosphere = xml.getElementsByTagName("yweather:atmosphere");
var humidity = atmosphere[0].getAttribute("humidity");
$('#weatherFeed').html("Humidity: " + humidity);
$('#weatherFeed').append(
"<div style=\"text-align: center;margin-left: auto; margin-right: auto;\">" +
city + ", " + state + "</div>");
}
function getData(){
$.ajax({
type: 'GET',
url: 'proxy.php?url=http://weather.yahooapis.com/forecastrss&p=94041',
dataType: 'xml',
success: function(xml) {
parseXml(xml);
}
});
}
if(Drupal.jsEnabled) {
$(function() {
getData();
setInterval("getData()", 30000);
});
}
私は次のエラーメッセージを参照してください:TypeError: Result of expression 'atmosphere[0]' [undefined] is not an object.
が問題にしてあるのJavaScriptコードは以下のFirefoxとIEで正常に動作しますが、サファリ(やChrome FWIW)では動作しません。 SafariでgetElementsByTagNameを使用していますか?別の方法でgetElementsByTagNameによって返されるオブジェクトにアクセスする必要がありますか?
はい、私はちょうどそれを試してSafariで同じエラーメッセージを得 – toddk