是否有现有的jsonp工具,比如在jquery中获取xml?

时间:2010-04-19 21:43:44

标签: jquery xml json jsonp

对于我正在开发的Web服务,我希望我的嵌入式代码(在客户端的站点上)从我的域中的服务器脚本中获取xml文件。

由于这是一个跨域请求,我想使用jsonp,因为它似乎是这种apis的事实上的标准。但是,对于我的应用程序,我更容易使用xml而不是json。现在,我当然可以将我的xml转换为服务器上的json,然后再返回到客户端站点javascript中的xml,但这似乎不必要地繁琐。我真正需要的是和xmlp解决方案,带有填充的xml。

我累了谷歌搜索但找不到这样做的jquery插件。有人知道一个简单的解决方案吗?

3 个答案:

答案 0 :(得分:5)

您可以使用Yahoo! Query Language(YQL)之类的东西来避免为XML文件编写另一种输出格式。

例如,要通过JSONP-X获取此问题的XML Feed,您将使用YQL查询URL,如:

  

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fstackoverflow.com%2Ffeeds%2Fquestion%2F2671143%27%20and%20itemPath%3D%27feed.entry%27&callback=my_jsonpx_handler

     

[Try this query in the YQL console]

这给你一个如下结果;有效地包装在JSON回调中的XML:

  

my_jsonpx_handler({"query":…,"results":["<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <id>http://stackoverflow.com/questions/2671143/is-there-an-existing-tool-for-jsonp-like-fetching-of-xml-in-jquery<\/id>\n <re:rank xmlns:re=\"http://purl.org/atompub/rank/1.0\" scheme=\"http://stackoverflow.com\">0<\/re:rank>…"]});

然后,您的小部件可以在YQL URL中查询其数据,这些数据又将与您服务器上的XML文件进行通信(具有缓存,速度等作为附加功能)。

答案 1 :(得分:4)

json工作的唯一原因是因为页面上包含的javascript可以在窗口中运行而不会出现任何x-domain问题。所以它必须保持javascript。但是,您可以缩小xml,确保它已正确转义并将其作为值发送到json对象中。

echo 'callback({data: "' + xml string + '"});';

或类似的东西。

答案 2 :(得分:1)

从jQuery 1.5开始,有一个实用工具方法,它使用jsonp加载XML保存了我的生命。

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$title = $xml.find( "title" );

http://api.jquery.com/jQuery.parseXML/