用 Ajax 和 RSS 攒个首页新闻——(上)
来源:互联网 发布:逆袭网络剧蛙趣第五集 编辑:程序博客网 时间:2024/04/28 13:41
为了排遣这段时间的无聊也顺便做个 RSS 应用的练习,决定给自己维护的一个小网站加个首页新闻,浏览器用 Ajax 或者 Ajah 从服务器取新闻异步的显示出来,同时提供 RSS 源供聚合器订阅。
XMLHTTPRequest 从上次做过一个手机模拟器后就再没碰过,这次在网上搜寻了一番居然发现了一个好东西:http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/,一个 Cross-Browser 的 XMLHttpRequest 实现,作者在创作共用条款(Creative Commons License)下发布这个库,只要你不移除脚本中作者的姓名和网址就可以自由使用,就用它了!下载 xmlhttprequest.js 以备后用。
数据可以保存在数据库中也可以简单的写入到服务器的一个文件中,为了灵活起见我就在 MySQL 中新建一个表放站内新闻了,就这么几个字段:id、title、content、time。新闻录入和从数据库中取数据提供给 Ajax/Ajah 请求这种垃圾代码我就不贴了:-)
下面是客户端 XMLHTTPRequest 的代码:
<html>
<head>
<title>首页新闻测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type="text/javascript" src="xmlhttprequest.js"></script>
</head>
<body>
<div id="News">新闻读取中……</div>
<script type="text/javascript">
var req = new XMLHttpRequest();
if( req )
{
req.onreadystatechange = function()
{
var News = "新闻读取失败";
try
{
if( req.readyState == 4 && ( req.status == 200 || req.status == 304 ) )
News = req.responseText;
}
catch(e)
{
News = e.description;
}
document.getElementById( 'News' ).innerHTML = News;
};
req.open( 'GET', 'news.php' );
req.send( null );
}
</script>
</body>
</html>
<head>
<title>首页新闻测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type="text/javascript" src="xmlhttprequest.js"></script>
</head>
<body>
<div id="News">新闻读取中……</div>
<script type="text/javascript">
var req = new XMLHttpRequest();
if( req )
{
req.onreadystatechange = function()
{
var News = "新闻读取失败";
try
{
if( req.readyState == 4 && ( req.status == 200 || req.status == 304 ) )
News = req.responseText;
}
catch(e)
{
News = e.description;
}
document.getElementById( 'News' ).innerHTML = News;
};
req.open( 'GET', 'news.php' );
req.send( null );
}
</script>
</body>
</html>
这里唯一值得说明的就是 XMLHTTPRequest 默认是用 UTF-8 传递数据的,所以你的数据源最好也用 UTF-8 否则(因为我们这里客户端已经指定了要用 GB2312 了)得到的会是乱码,这在 IE 下会引发 JavaScript 错误,在 FireFox 下却没问题,所以我用 try 和 catch 把上面的代码包住了,免得测试的时候出现错误。如果想试试的话可以用下面的代码作为 news.php:
<?php
echo iconv( "GB2312", "UTF-8", "这就是新闻" );
//echo "这就是新闻";
?>
如果注释掉第一句而开放第二句的话不仅看到的是乱码,在 IE 下还会出现 -1072896748 错误。有意思的是 IE 好像还会缓存由 XMLHTTPRequest 收到的内容,而 FireFox 则不会,所以在测试中会出现刷新 IE 很多次看到的还是旧数据的问题,可以在程序里加上下面 4 句话解决这个问题:
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
<?php
echo iconv( "GB2312", "UTF-8", "这就是新闻" );
//echo "这就是新闻";
?>
如果注释掉第一句而开放第二句的话不仅看到的是乱码,在 IE 下还会出现 -1072896748 错误。有意思的是 IE 好像还会缓存由 XMLHTTPRequest 收到的内容,而 FireFox 则不会,所以在测试中会出现刷新 IE 很多次看到的还是旧数据的问题,可以在程序里加上下面 4 句话解决这个问题:
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
呵呵,好了,今天就写到这里,RSS 的部分明天再写,开饭……
- 用 Ajax 和 RSS 攒个首页新闻——(上)
- 用 Ajax 和 RSS 攒个首页新闻——(中)
- 用 Ajax 和 RSS 攒个首页新闻——(下)
- 用Ajax和RSS制作一个首页新闻
- 用C#做了个RSS新闻聚合器
- 新闻发布项目——首页(index.jsp)
- html+css仿百度新闻首页(上)
- RSS新闻阅读器—相关android技术知识点
- RSS新闻
- Android demo-->网易新闻风格的RSS新闻抓取项目(一) 菜单栏、滚动广告和新闻列表的配置
- 使用 RSS 和 Atom 实现新闻联合
- 新闻蚂蚁 - 专业的RSS和中文新闻阅读器
- PHP 和 AJAX RSS 阅读器
- PHP 和 AJAX RSS 阅读器
- 桌面背景:rss新闻阅读器(图)
- 模仿网易新闻客户端(RSS版)
- 仿网易新闻APP(一)——爬网易首页新闻头条
- 利用pulltoRefeshListView实现网易新闻首页效果(可以上拉下拉加载的viewpager+listview)
- 质量越高,定价越活
- JSP中文问题
- Java位运算符
- Java包设计原则
- 有关字节对齐的介绍:
- 用 Ajax 和 RSS 攒个首页新闻——(上)
- 轿车内黑色短裙肉色丝袜
- 制服美人下班后
- 槟榔
- 如何用c#实现网络的拓扑,用深度优先方法?
- 教你几招如何看透一个人(转贴)
- 腿模yao图少但是都是精品
- 理解Windows XP的环境变量
- 一个比较有趣的例子