我正在使用 jquery.xdomainajax.js 进行跨域调用。但是,获取返回的 RSS 提要的结果不是原始 XML 格式。它使得无法解析。原始 RSS 源正确且有效。
这是我现在正在使用的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" media="screen" href="css/reset.css">
<link rel="stylesheet" type="text/css" media="screen" href="css/main.css">
<script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="js/jquery.xdomainajax.js"></script>
</head>
<body>
<div id="wrapper"> </div>
</body>
<script type="text/javascript">
$(document).ready(function() {
$.get('http://example.com/feed/', function(res) {
var string = res.responseText;
alert(string);
});
});
</script>
</html>
最佳答案
Cross domain mod for jQuery您正在使用的是 YQL下面。
默认情况下,此 mod 将返回一个 HTML 文件,因为它是从“html”YQL 数据表中获取的,最终将其包装在 HTML 中。您希望它从“rss”或“feed”数据表类型中获取。
对于 jquery.xdomainajax.js 的副本,您需要在第 19 行进行编辑:
query = 'select * from html where url="{URL}" and xpath="*"';
至以下内容
query = 'select * from rss where url="{URL}"';
第 59 行,来自
responseText: (data.results[0] || '')
// YQL screws with <script>s
// Get rid of them
.replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
至
responseText: data.results
如果您不进行第二次更改,您将只能获得 RSS 提要中的第一项。
关于javascript - RSS 提要响应不是原始 XML 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486163/