RSS提要响应不是原始XML格式

时间:2013-12-10 04:32:00

标签: javascript jquery html rss cross-domain

我正在使用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>

1 个答案:

答案 0 :(得分:0)

您使用的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 Feed中的第一项。