当前位置: 首页 > 工具软件 > jFeed > 使用案例 >

关于nokia S40开发自带的jquery.jfeed.js

鄢朝斑
2023-12-01

Nokia WDE新建一个项目的时候会自动带一个范例程序,读取一个RSS feed,然后展示出来。

今天研究了一下,发现RSS feed放在本地后就不好用了,只能读取远程服务器上的。这是为什么呢?

在网上找到了一个新的jquery.jfeed.js,貌似是比nokia包自带的那个更新,换过本身的jquery.jfeed.js就不存在本地还是远程的问题了,这是一个解决办法。

https://github.com/jfhovinne/jFeed/blob/master/build/dist/jquery.jfeed.js

1. 但是还是想研究一下为什么原来的那个不好用。打断点之后发现

console.log("xhr.status is " + xhr.status); 返回的xhr.status是0,而不是200。

搜索了一下找到解决办法是把本地xml文件放在localhost下

http://localhost/test/topstories.xml 代替xml/topstories.xml。这是第一个坑。

2. 这个改过之后发现xhr.status是200了但是还是读不出来feed,然后继续打log发现header的第一个参数是application/xml而不是text/xml,于是

if (arr[0].toLowerCase() == "application/xml") {   代替  if (arr[0].toLowerCase() == "text/xml") {   这是第二个坑。

补充一点关于application/xml和text/xml 的区别 http://www.cnblogs.com/skykang/archive/2011/03/15/1984810.html,总的来说就是text/xml不支持UTF-8,所以我们基本上要用application/xml

3. 可是新的jquery.jfeed.js为什么不需要把xml放在本地也能解析呢?难道它没有用到XMLHttpRequest?

我想解决办法应该在jquery自己的$.ajax中,现在这个function我还没研究明白

继续。。

jquery.js 8165-8171行

// If the request is local and we have data: assume a success			
// (success with no data won't get notified, that's the best we
// can do given current implementations)			
console.log(!status + " " + s.isLocal + " " + !s.crossDomain);		
if ( !status && s.isLocal && !s.crossDomain ) {
    status = responses.text ? 200 : 404;
}

也就是说,相对路径的时候本来status是0,结果强制给status设置成200..


 类似资料: