我想遍历所有项目并解析内容。我可以获取除 content:encoded 以外的所有元素。
如果我控制台记录ajax响应,然后控制台记录项目元素之一,则除了content:encoded以外,我都会看到它们。示例:
0:
author: "Amir Karimi The University of Texas at San Antonio"
link: "https://www.merlot.org/merlot/viewMaterial.htm?id=1138036"
pubDate: "Tue, 15 Mar 2016 14:45:55 GMT"
title: "Factors Influencing Student Graduation Rates"
这是我使用ajax请求的代码,假定json返回类型:
$.getJSON(url).then( function(response) {buildFeed(response.data['channel']['item']);});
function buildFeed(data) {
let feed = "";
console.log(data);
//for each row of data
$.each(data, function(key, value) {
feed = feed + '<div className="feed-item">';
feed = feed + '<div><a href="' + value.link + '" target="_blank">' + value.title + '</a></div>';
feed = feed + '<div></div>';
feed = feed + '<div>' + value.pubDate + '</div>';
feed = feed + '<div>Author: ' + value.author + '</div>';
feed = feed + '<hr/>';
feed = feed + '</div>';
});
//Load feed
$feed.html(feed);
}
我还尝试使用xml请求类型发出ajax请求,但收到解析错误。下面的代码:
url: appURL + '/merlot-feeds/feed/earning-jr-status/',
dataType: "xml",
success: function(xml) {
//it never gets here
console.log('success');
console.log(xml);
},
error: function(xhr, status) {
//The request always returns an error
console.log('error');
console.log(xhr);
console.log(status); //result is "parserror"
console.log(xhr.responseText);
}
});
上述ajax调用失败,并且在我登录控制台时,状态显示为“ parsererror”。但是,如果我在控制台上记录响应文本,则会得到完整的响应对象。
以下假定是否正确:源xml设置不正确,这就是为什么它引发parseerror错误?如何解决此问题并提取编码的内容?
答案 0 :(得分:0)
我能够以Atom提要而不是RSS提要的形式获取内容,从而将标签从<content:encoded>
切换为<summary>
,现在我可以使用第一种方法了。并不是一个真正的答案,也无法解决根本原因,但是,嘿,它现在正在起作用。
答案 1 :(得分:-1)
它不是JSON,而是XML,对于XML来说,它通常像HTML一样读/解析,并且选择<content:encoded>
时必须用:
来代替冒号\\:
,最后使用{{1 }},而不是$.get()
$.getJSON()