首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jFeed -没有执行成功的函数(jQuery插件)

jFeed -没有执行成功的函数(jQuery插件)
EN

Stack Overflow用户
提问于 2009-03-19 12:17:35
回答 4查看 3.7K关注 0票数 2

我有以下Javascript代码,其中feed是rss提要的有效url。

代码语言:javascript
复制
jQuery(function() {

        jQuery.getFeed({
            url:feed,
            success: function(feed){
                      alert(feed);
                      }
        });
    });}

当我运行这个程序时,警报就不会出现。使用firebug,我可以看到正在建立的连接和来自提要的响应。

备注:我知道这是一个安全问题,有些浏览器会阻止它,但情况并非如此,因为我已经解决了这个问题,浏览器不再阻止连接

编辑:由于某些原因,我不能让评论出现在这里:

该调用目前没有由脚本代理,因为这是一个测试,它只是用以下内容覆盖浏览器安全设置:

代码语言:javascript
复制
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-19 13:23:34

根据你提供的信息,我们可以看出你的电话是正确的。问题可能在别的地方。建议您在jFeed源代码中挖掘并禁用$.ajax成功方法中的提要解析:

代码语言:javascript
复制
    $.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":

代码语言:javascript
复制
var ct = xhr.getResponseHeader("content-type"),
  xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
  data = xml ? xhr.responseXML : xhr.responseText;

以下是我的问题:

  • 您是否像我想的那样使用脚本作为代理脚本?
  • 是否将内容类型设置为包含xml ?

的内容类型?

下面是jFeed附带的一个极简的php示例:

代码语言:javascript
复制
<?php
header('Content-type: application/xml');
$handle = fopen($_REQUEST['url'], "r");

if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>
票数 3
EN

Stack Overflow用户

发布于 2009-08-09 18:34:12

只是为了补充一下,对于那些需要使用自定义名称空间从提要中获取内容的人,使用jFeed,您可以这样做

代码语言:javascript
复制
<dc:creator>SomeBody Name</dc:creator>
<media:thumbnail url="someimage.jpg" />

将自己的项目添加到JFeed原型中

代码语言:javascript
复制
JFeedItem.prototype = {
        title: '',
        link: '',
        description: '',
        updated: '',
        id: '',
        mcontent:'',
        mdescr:'',
        mcredit: '',
        dcreator:'',
        mthumbnail:''
    };

然后添加到您曾经使用过的JRss和JAtom的原型中,添加下面的item循环

代码语言:javascript
复制
item.dcreator = $(this).find("dc\\:creator").eq(0).text();
item.mcontent = $(this).find("media\\:content").eq(0);
item.mdescr = $(this).find("media\\:description").eq(0).text();
item.mcredit = $(this).find("media\\:creator").eq(0).text();
item.mthumbnail = $( $(this).find("media\\:thumbnail").eq(0) ).attr("url");

希望这一天能帮助那些在用jQuery处理xml中的命名空间时遇到困难的人。我正在与来自纽约时报的RSSfeeds合作,需要获得媒体缩略图来显示到视频内容的链接,并且不得不花费一些时间来研究如何通过名称空间工作。

票数 2
EN

Stack Overflow用户

发布于 2009-03-19 12:24:17

我也有过类似的问题。尝试将URL编码到url中:看看这是否有效,而不是设置feed变量。

在段尾有一个额外的},这仅仅是代码的一个额外部分吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/661990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档