日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

利用PHP和AJAX創(chuàng)建RSS聚合器(3)_PHP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:PHP初學(xué)者頭疼問(wèn)題總結(jié)
  文本關(guān)鍵字:程序設(shè)計(jì)/PHP/技巧   【1】頁(yè)面之間無(wú)法傳遞變量   get,post,session在最新的php版本中自動(dòng)全局變量是關(guān)閉的,所以要從上一頁(yè)面取得提交過(guò)來(lái)得變量要使用$_GET['foo'],

  GET/POST與AJAX相結(jié)合

  為了POST請(qǐng)求,我們首先需要?jiǎng)?chuàng)建該請(qǐng)求對(duì)象。如果你沒(méi)有創(chuàng)建請(qǐng)求對(duì)象的經(jīng)驗(yàn),那么可以讀一下我的文章《How To Use AJAX》或簡(jiǎn)單地研究一下本文的示例源代碼。一旦創(chuàng)建該請(qǐng)求對(duì)象,就可以調(diào)用sendFeed方法并傳遞由表單所創(chuàng)建的URL:

function sendFeed(url){
 post.onreadystatechange = sendRequest;
 post.open("POST", url, true);
 post.send(url);
}

  一旦收到來(lái)自于PHP對(duì)象的響應(yīng)并被正確加載,則對(duì)與該響應(yīng)相應(yīng)的本地文件發(fā)出另一個(gè)請(qǐng)求。在這種情況中,post.responseText提供給我們?cè)撔挛募穆窂剑?

function sendRequest(){
 if(checkReadyState(post)){
  request = createRequestObject();
  request.onreadystatechange = onResponse;
  request.open("GET", post.responseText, true);
  request.send(null);
 }
}

  由于RSS饋送之間的區(qū)別,分析響應(yīng)具有一定的挑戰(zhàn)性。一些含有包含標(biāo)題和描述結(jié)點(diǎn)的圖像,而其它則沒(méi)有。因此,當(dāng)我們分析回饋時(shí),我們需要做一點(diǎn)檢查來(lái)譯解它是否包括一圖像。如果它包括一圖像,我們就可以,與該饋送的標(biāo)題和鏈接一起,在image div標(biāo)簽中顯示該圖像:

var _logo = "";
var _title = response.getElementsByTagName('title')[0].firstChild.data;
var _link = response.getElementsByTagName('link')[0].firstChild.data;;
_logo = "<a href='" _link "' target='_blank'>" _title "</a><br/>";
if(checkForTag(response.getElementsByTagName('image')[0]))
{
 var _url = response.getElementsByTagName('url')[0].firstChild.data;
 _logo = "<img src='" _url "' border='0'><br/>"
}
document.getElementById('logo').innerHTML = _logo;

  我們不僅必須檢查每個(gè)圖像以顯示它,當(dāng)遍歷饋送中所有的項(xiàng)時(shí)我們還需要對(duì)之進(jìn)行檢查。因?yàn)槿绻嬖谝粋(gè)圖像,那么所有另外的標(biāo)題和鏈接結(jié)點(diǎn)索引都將無(wú)法正常工作。因此,當(dāng)發(fā)現(xiàn)圖像標(biāo)簽時(shí),我們應(yīng)該通過(guò)在每一次遍歷中增加索引值( 1)來(lái)調(diào)整標(biāo)題和鏈接結(jié)點(diǎn)的索引:

if(checkForTag(response.getElementsByTagName('image')[0]) "" i>0){
 var _title=response.getElementsByTagName('title')[i 1].firstChild.data;
 var _link=response.getElementsByTagName('link')[i 1].firstChild.data;
}
else{
 var _title =response.getElementsByTagName('title')[i].firstChild.data;
 var _link = response.getElementsByTagName('link')[i].firstChild.data;
}

  你可以使用checkForTag方法來(lái)檢查是否存在特定的標(biāo)簽:

function checkForTag(tag){
 if(tag != undefined) {
  return true;
 }
 else{
  return false;
 }
}

if(i>1){
 var previousPubDate = response.getElementsByTagName('pubDate')[i-1].firstChild.data;
}
if(pubDate != previousPubDate || previousPubDate == undefined){
 _copy = "<div id='detail'>" pubDate "</div><hr align='left' width='90%'/>";
}
_copy = "<a href=\"JavaScript:showDetails('" i "');\">" _title "</a><br/><br/>";
document.getElementById('copy').innerHTML = _copy;

  注意,上面的最后一部分是showDetails方法,它用于當(dāng)一用戶從一個(gè)饋送中選擇一特定的項(xiàng)時(shí)進(jìn)行細(xì)節(jié)顯示。這個(gè)方法有一個(gè)參數(shù)(項(xiàng)索引值),這個(gè)索引用于發(fā)現(xiàn)在該饋送中details結(jié)點(diǎn)的索引:

function showDetails(index){
 document.getElementById('details').innerHTML = response.getElementsByTagName('description')[index].firstChild.data;
}

  結(jié)論

  使用AJAX發(fā)送查詢字符串到一個(gè)服務(wù)器端腳本并檢索一個(gè)基于該串的定制響應(yīng),這對(duì)于任何Web開(kāi)發(fā)者都有實(shí)現(xiàn)的可能。這樣以來(lái),你的下一個(gè)web應(yīng)用程序也將會(huì)充滿了新的可能性。

  存在許多種進(jìn)行饋送分析的可能性。例如,你可以把項(xiàng)賦到類(lèi)別上并使得該類(lèi)別可折迭,這樣用戶就可以對(duì)其想觀看的內(nèi)容進(jìn)行選擇。作為一個(gè)示例,我使用日期來(lái)對(duì)項(xiàng)進(jìn)行分類(lèi)-這可以通過(guò)譯解是否針對(duì)一個(gè)特定項(xiàng)的pubDate不同于前一個(gè)項(xiàng)的pubDate并且相應(yīng)地顯示一新的日期來(lái)實(shí)現(xiàn):
 分析響應(yīng)

分享:Php高手帶路--問(wèn)題匯總解答
  1:為什么我得不到變量    我在一網(wǎng)頁(yè)向另一網(wǎng)頁(yè)P(yáng)OST數(shù)據(jù)name,為什么輸出$name時(shí)卻得不到任何值?    在PHP4.2以后的版本中reGISter_global默認(rèn)為off    若想取得從另一頁(yè)面

共3頁(yè)上一頁(yè)123下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類(lèi):PHP教程/更新時(shí)間:2008-08-22
相關(guān)PHP教程