根据您提供的信息,我们可以看到您的呼叫是正确的。问题可能出在其他地方。建议您挖掘 jFeed 源代码并在 $.ajax 成功方法中禁用提要解析:
$.ajax({
type: 'GET',
url: options.url,
data: options.data,
dataType: 'xml',
success: function(xml) {
var feed = xml; // <== was "var feed = new JFeed(xml);"
if(jQuery.isFunction(options.success)) options.success(feed);
}
});
如果您的警报弹出,这是一个提要解析问题。在这种情况下,您可以检查 xml 是否正确并在此处提交以供进一步调查。
我已经运行了一些测试并检查了 jQuery 代码。您说您解决了浏览器安全问题:我猜您在服务器上安装了一个代理脚本,该脚本将从远程服务器下载 rss 文件,然后将其传输到您的 ajax 请求(因为浏览器会阻止 ajax 调用服务器与您的页面所在的服务器不同)。当使用 dataType : 'xml' 进行 ajax 调用时,jQuery 期望响应的内容类型包含字符串“xml”:
var ct = xhr.getResponseHeader("content-type"),
xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
data = xml ? xhr.responseXML : xhr.responseText;
以下是我的问题:
- 您是否像我想的那样使用脚本作为代理脚本?
- 此脚本是否将内容类型设置为包含 xml 的内容?
这是 jFeed 附带的一个简约的 php 示例:
<?php
header('Content-type: application/xml');
$handle = fopen($_REQUEST['url'], "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>