2009-12-02 136 views
2

我想开发一个JQuery插件,它将访问外部XML提要并显示结果。以下是我迄今为止:JQuery插件帮助

HTML头文件包含

<script language="javascript" src="jquery.rss.js" type="text/javascript"></script> 

JQuery的准备

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#rss").rss({count:6,loading_text:"loading"}); 
    }); 
</script> 

插件(jquery.rss.js)

(function($) { 

    $.fn.rss = function (o) { 
     var s = { 
      count: 6, 
      loading_text: null, 
     }; 

     if(o) $.extend(s,o); 
     return this.each (function() { 
      var list = $('<ul class="rss">').appendTo(this); 
      var loading = $('<p class="desc"><center><img src="loading.gif" height="19" width="18" border="0"><br>'+s.loading_text+'</center></p>'); 
      var items = 0; 
      var url = 'http://www.example.com/feed.xml; 
      if (s.loading_text) $(this).append(loading); 

      $.get(url,{},function(data){ 
       if (s.loading_text) loading.remove();  
       $('forecastday',data).each(function(i){ 
        var title = $(this).find("title").text(); 
        var description = $(this).find("description").text(); 

        list.append('<li>' + title + ' - ' + description + '</li>'); 

        items++; 
        if(items == s.count) last; 
       }); 
      }); 
     }); 
    } 

})(jQuery); 

一切似乎都直到我尝试执行$ .get,此时没有任何内容返回。我通过使用alert()验证了从$ .get请求中调用了正确的URL。

希望我不遥远,JQuery大师可以指出我要出错的地方。在此先感谢您的帮助!

回答

1

你不能做跨域的ajax请求。开发一个服务器端代理(部署在同一台主机上),将请求路由到wunderground或查找支持JSONP的API。

参见 - API to get weather based on longitude and latitude coordinates

+0

那么人们如何拉动RSS提要URL并使用JavaScript内联显示它们?没有访问RSS文件的XML文件的跨域请求? – 2009-12-02 02:02:58

+0

你有这些网站的例子吗?我确定他们使用上述技术之一。这里有一篇文章详细解释它 - http://developer.yahoo.com/javascript/howto-proxy.html – 2009-12-02 08:03:56

+0

你是对的。我使用mod_rewrite创建了一个代理,它似乎完成了旅程。感谢您指点我正确的方向! – 2009-12-02 15:04:56

1

看看这个jQuery插件:jdigiclock。它使用代理来获取和解析XML数据并将其提供给jQuery脚本。我想,这是同样的事情,你正在寻找。