我有一個XML文檔的Ajax請求。 XML文檔是一個RSS提要。這裏是我的onSuccess
的要求:MooTools:解析Ajax響應樹
onSuccess: function(responseTree) {
// process <item> elements
}
如何枚舉<item>
元素和檢索各個子值?
我有一個XML文檔的Ajax請求。 XML文檔是一個RSS提要。這裏是我的onSuccess
的要求:MooTools:解析Ajax響應樹
onSuccess: function(responseTree) {
// process <item> elements
}
如何枚舉<item>
元素和檢索各個子值?
如果被調用文件的內容類型設置爲text/xml
,success-event也會返回一個XML對象。但是,請注意,如果您在另一臺服務器上調用文件,則這是不可能的 - 這不是跨域的。您只能使用請求對象來調用同一個域上的文件。
通過item
元素枚舉的示例代碼;
new Request({
url: '/your-rss-parser.php',
method: 'get',
onSuccess: function(responseText, responseXML) {
responseXML.getElements('item').each(function(item) {
alert(item.getElement('title').get('text'));
});
}
}).send();
我很難讓Björn的解決方案在課堂上工作。我有XML
<?xml version="1.0" encoding="utf-8"?>
<countries>
<country>
<name>Argentina</name>
<id>1</id>
</country>
<country>
<name>Australia</name>
<id>2</id>
<climate>Hot</climate>
</country>
<country >
<name>France</name>
<id>3</id>
</country>
</countries>
和JS
var requestXML = new Class({
initialize: function(){
var req = new Request({
method: 'post',
autoCancel: true,
url: 'data.xml',
onSuccess: function(text, xml){
xml.getElements('country').each(function(country) {
alert(item.getElement('country').get('text'));
});
}.bind(this)
}).send();
},
});
window.addEvent('domready', function() {
var request = new requestXML();
});
但腳本無法將XML對象上做getElement - 鉻抱怨 「遺漏的類型錯誤:對象#有沒有方法 'getElement'」。
我沒有得到這個其他版本的Chrome工作(看了這個神祕的油滑方法in this post)
var requestXML = new Class({
initialize: function(){
var req = new Request({
method: 'post',
autoCancel: true,
url: 'data.xml',
onRequest: function(){
//
}.bind(this),
onSuccess: function(text, xml){
this.parseXML(xml);
}.bind(this),
onFailure: function(transport){
alert('XML loading error');
}
}).send();
},
parseXML: function(xml){
var firstCountry = Slick.find(xml, 'country name');
// Finds first matching element
// Returns <name>Argentina</name>
var countries = Slick.search(xml, 'country');
// Finds all matching elements
// Returns [<country>...</country>, <country>...</country>, ... ]
var output = '';
countries.each(function(item, index){
var id = item.getElement('id').get('text');
var name = item.getElement('name').get('text');
var climate = item.getElement('climate');
if (climate){
climate = climate.get('text');
} else {
climate = '';
}
output += id + ' ' + name + ' ' + climate + '<br>';
});
$('container').set('html', output);
}
});
window.addEvent('domready', function() {
var request = new requestXML();
});
但它在IE瀏覽器,它說的「對象不支持此屬性或方法」打破該行var id = item.getElement('id').get('text');
。這看起來與Björn樣式解決方案中的getElement()問題類似。
有人可以告訴我們嗎? Mootools的文檔與JQuery相比似乎很差,而且我無法找到關於如何解析XML的很多有用信息。
乾杯 最後
檢查您的RSS源以確保有一個稱爲ID的元素。 – R0b0tn1k 2012-06-01 09:07:38
那麼什麼是檢索和分析在javascript一個RSS feed以正確的方式,因爲飼料通常是從另一臺服務器? – noio 2011-03-29 09:35:51