我正在使用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>
您正在使用的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提要中的第一个项目。