|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
毕业设计作品自己个人还是觉得比较满意的,尽管有些功能考虑的不全面,也没有很好的实现。ajax|rss|创立 想象利用一个复杂HTML文件来把一个恳求发送到一个办事器端剧本,收到一个基于该恳求的定制XML文件,然后把它显示给用户而几近不需求刷新阅读器!本文作者将同你一同切磋如何在通俗Web使用法式中结合PHP和AJAX手艺来创立及时的数据传输而不需求停止阅读器刷新。
虽然本文所利用的是PHP言语,然而请记住任何办事器端言语城市正常任务。为了了解本文,我假定你根基了解JavaScript和PHP或一相似办事器端言语。
本文示例利用AJAX来把一恳求从一个RSS馈送发送到必定制的PHP对象。该PHP对象复制一份在当地办事器上的该馈送并前往这一途径。该恳求对象收到这一途径,剖析它,而且把数据以HTML模式显示给用户。这听起来触及良多步调,其实它仅由4个小文件构成。之所以利用了4个小文件,是为了均衡它们各自特定的力气而使全部体系的处置极富效力性。
我想,有些读者能够会问,为何你要创立在当地办事器上的馈送的一个正本而不是复杂剖析最原始的馈送。缘由是,如许以来可以答应绕过XML HTTP Request对象所强加的跨域限制。前面,我还会注释如何创立这个定制的PHP对象;然而起首,让咱们从表单创立入手下手。
创立收回恳求的表单
你要做的第一工作是,在你的HTML的head标签之间包含你能够想利用的JavaScript和任何CSS文件。我包含了一个式样表来完成该聚合器的最初结构并用一个JavaScript文件来收回恳求和停止馈送剖析:
<link href="css/layout.css" rel="stylesheet" type="text/css" />
<script src="js/request.js"></script>
下一步,创立一个表单,它针对你所选择的一个RSS馈送收回恳求。我创立的表单只包含一个输出字段和一个提交该恳求的按钮。该恳求的查询是一个字符串,它由馈送输出值和一个将在办事器端被校验的口令字构成;作为一个示例,我利用了上面模式:
"password=mypassword
该代码在每次页面加载之时收回一次恳求;因而,假如页面被刷新,现有的在该输出域中的馈送串将在页面加载时被恳求。上面是一个表双数据的示例,连统一些div标签用来显示已剖析的馈送的特定结点:
<body password=mypassword');">
<form name="feedForm" method="post" action="javascript:makeRequest('request.php?request=' + document.feedForm.feed.value + '"password=mypassword');">
Enter a feed: <input type="text" name="feed" id="feed" size="20">
<input type="submit" name="submit" value="Add Feed">
</form>
<div id="logo"></div>
<hr/>
<div id="copy"></div>
<div id="details"></div>
</body>
我所创立的这三个div标签是logo,copy和details,个中每个都在结构款式表中有一个与之相干联的款式。当咱们剖析馈送时将会用到它们,然而咱们起首需求可以存取咱们所恳求的馈送。这可使用我后面所提到的PHP对象来完成。
创立定制的PHP对象
我用PHP创立了一个小型RSS类,它在当地办事器上创立一个恳求馈送的正本,如许它可觉得咱们稍后要创立的XML HTTP Request对象所存取。典范地,你不克不及跨域恳求一个文件,这意味着你要恳求的文件需求位于当地办事器上。这个类是一种处理跨域成绩的举措,由于它创立该馈送的一个正本,这个正本在当地办事器上被恳求而且把当地途径前往到该馈送,然后它由该Request对象来存取。
这个类中独一的办法是一个恳求办法,它唯一一个指向所恳求的RSS 馈送的URL的参数。然后,它经由过程rss的名字来反省是不是一目次位于当地办事器上。假如不存在,就创立一个并把其权限形式设置为0666,这意味着该目次可读写。当被设置为可读的时,该目次就能够在今后被存取;而当被设置为可写的时,就能够把该馈送的一个正本写向当地办事器上的目次:
file://假如不存在目次就创立一个
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666);
}
注重
在一台Windows机械上,关于PHP 4.2.0及以上版本中形式设置是不被请求的。然而,假如它存在的话,它将被疏忽;因而,我保存了它,以备该工程被迁徙到一台UNIX或Linux办事器上。
在把馈送复制到该办事器前,咱们需求一个独一的文件名。我对这个完全的URL利用了md5加密办法以确保一切馈送的名字是独一的。经由过程这个新的文件名,它可以毗连一个描写指向该文件的目次的字符串;这将在创立该馈送的正本时利用:
file://创立独一的定名
$file=md5($rss_url);
$path="$dir/$file.xml";
经由过程利用被界说在下面的途径和到原始的被恳求的馈送的URL的参考,如今咱们能创立该文件的一个正本。最初,把该途径前往到该新文件,作为对该恳求的呼应:
file://复制馈送到当地办事器
copy($rss_url,"$path");
return $path;
Following is the small, yet powerful RSS class in its entirety:
<?php
class RSS
{
function get($rss_url)
{
if($rss_url != "")
{
file://假如不存在目次就创立一个
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666);
}
// 创立一个独一的名字
$file = md5($rss_url);
$path = "$dir/$file.xml";
file://复制馈送到当地办事器
copy($rss_url, "$path");
return $path;
}
}
}
?>
[1] [2] 下一页
我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话: |
|