程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 基於PHP和AJAX創建RSS聚合器

基於PHP和AJAX創建RSS聚合器

編輯:關於PHP編程

  想象使用一個簡單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 onload="javascript:makeRequest(request.php(做為現在的主流開發語言)?request= + document.feedForm.feed.value + "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,這意味著該目錄可讀寫。當被設置為可讀的時,該目錄就可以在以後被存取;而當被設置為可寫的時,就可以把該饋送的一個副本寫向本地服務器上的目錄:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved