原子到JSONP的转换困境

时间:2012-04-18 00:50:10

标签: ajax cross-domain jsonp feed atom-feed

因此,我正在开发另一台服务器上存在的新闻源以及该Feed描述的静态PDF文档。

我正在尝试实现仅客户端的feed解析,因为我不确定后端服务器的功能是什么。

作为一种快捷方式,我正在使用Blastcasta.com

解析JSON的Atom提要
url = "http://www.blastcasta.com/feed-to-json.aspx?feedurl=http://[atomLocation]/newsletter.atom"

data = {}
$.ajax({
  url: url + "?callback=?",
  dataType: "jsonp",
  data: data,
  success: function(data) { onSuccess(data); },
  error: function() { alert('Failed to parse feed'); },
});

如果我将dataType设置为'application / json',我会得到一个交叉原点错误。如果我将它设置为'jsonp',我会得到'语法错误:意外令牌:'。

据我所知,jsonp是json包装在一个函数或类似的东西中。

是否有合理的解决方法,或者我是否需要“吮吸它”并开发服务器端的atom-to-jsonp服务?

1 个答案:

答案 0 :(得分:1)

此服务返回JSON或类似:

variable = {...}

如果设置了param url参数,而不是JSON-P :(

使用dataType: "jsonp"无效,dataType: "json"也不起作用,因为该服务不允许跨域ajax请求(因为没有设置Access-Control-Allow-Origin标头 - >见:CORS

解决方法是插入<script>标记,如下所示:

<script type="text/javascript" src="http://www.blastcasta.com/feed-to-json.aspx?feedurl=<your url here>&param=myVariable"></script>

然后myVariable包含返回的对象。

示例演示:http://jsfiddle.net/kFL9G/