亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

在AJAX開發中集成數據庫技術

2024-09-01 08:26:18
字體:
來源:轉載
供稿:網友

   一、引言

  如今,有相當多的Web應用程序,如Backpack,Blinksale和Gmail,都把數據庫技術與AJAX集成到一起。通過提供與數據庫通訊而不用刷新瀏覽器這種強有力的技術,這種集成對web應用程序和用戶體驗產生巨大的影響-這意味著,在用戶繼續其它交互的同時可以實現實時的數據傳輸。

  本文將集中討論上述技術集成機理。同時提供了完整的參考源碼。這個示例是一個簡單的職務記錄應用程序,其中每個職務包含一個標題,描述和日期-允許用戶添加、編輯和刪除職務。所有這些都是你與數據庫記錄數據打交道時的基本操作,但是這個應用程序更進了一步。一個職務可以變化成一個可編輯的表單-它將被從數據庫中加以保存或刪除,以及以其新狀態顯示而不需要刷新瀏覽器并中斷用戶操作。

  在本文中,我假定你已經初步了解AJAX、MySQL和PHP,或一類似的服務器端語言。如果你還沒有創建過XML HTTP Request對象,那么可以先參考我的文章“怎樣使用AJAX”。下面,首先讓我們討論數據庫的問題。

  二、創建數據庫


  你需要做的第一件事是創建數據庫表來為這些職務存儲數據。我創建了一個叫informit_ajax的MySQL表-它擁有ID,title,description和date字段-這些都是在本文中不斷重復出現的變量。下面是創建該表的代碼:

CREATE TABLE ′informit_ajax′ (
′id′ int(11) NOT NULL auto_increment,
′date′ datetime NOT NULL default '0000-00-00 00:00:00',
′description′ longtext NOT NULL,
′title′ varchar(100) NOT NULL default '',
PRIMARY KEY (′id′)
) TYPE=MyISAM;

  你可以用任何MySQL查詢工具或開發應用程序所用的語言來執行這段代碼。一旦準備好數據庫,接下來就需要創建向PHP后臺發出請求的前端文件。

   三、發出請求

  這里的索引HTML文件是一簡單的數據占位符-它將被從數據庫中加以分析。該文件包含到javascript和CSS文件的參考;還包含一個發出首次請求的onload處理器和三個div標簽:

  ? Layout-用于把頁面內容居中

  ? loading-在被請求的數據加載期間加載消息,它將為HTTPRequest對象所接收

  ? posts-用于顯示每一個分析后的職務數據

<head>
<title>How to Integrate a Database with AJAX</title>
<link href="css/layout.css" rel="stylesheet" type="text/css" />
<script src="js/request.js"></script>
<script src="js/post.js"></script>
</head>
<body onload="javascript:makeRequest('services/post.php?method=get');">
<div id="layout" align="center">
<div id="posts"></div>
<p><input type="button" value="add a post" onmousedown="javascript:makeRequest('services/post.php?method=save');" /></p>
<p><div id="loading"></div></p>
</div>

</body>

  當頁面裝載時產生第一個請求。這個請求發送一個get查詢到一個我們稍后會創建的PHP類;但是首先我們需要為請求的響應創建分析方法。javascript請求文件負責處理所有的基礎工作,例如創建對象,發送請求以及檢查準備狀態等。當從Request對象收到響應時,我用這個javascript職務文件來處理這些職務的HTML生成。onResponse方法是相當強壯的,因為它以文本和表單兩種版本處理每個職務的HTML頁面生成,并且把它們放置到它們自己定制的div標簽中;這樣以來,我們就可以容易地在用戶交互期間定位它們。通過這種方法,我們可以在每個職務的文本和表單版本之間進行切換-這可以通過點擊一個"edit this post"鏈接來實現。下面是針對每個職務創建的HTML頁面的代碼,你可以在本文相應的下載源文件中看到完整的方法實現。

var html = "<div class='post' id='post_" i "' " postDisplay ">"
"<div class='title' id='title_" i "'>" _title "</div>"
"<div class='description' id='description_" i "'>" _description "</div>"
"<div class='date' id='date_" i "'>" _date "</div>"
"<a href=/"javascript:toggle('" i "');/">edit this post</a><br/>"
"</div>"
"<div class='post' id='formPost_" i "' " formPostDisplay ">"
"<div class='title'><input type='text' name='title' id='formTitle_" i "' size='60' value='" _title "'></div>"
"<div class='description'><textarea type='text' id='formDescription_" i "' wrap='virtual' cols='60' rows='15'>" _description "</textarea></div>"
"<div class='date'>" _date "</div>"
"<input type='button' name='cancel' value='cancel' onclick=/"javascript:toggle('" i "');/">"
"<input type='button' name='delete' value='delete this post' onclick=/"javascript:deletePost(" _id ");/">"
"<input type='button' name='submit' value='save this post' onclick=/"javascript:saveNewPost(" _id "," i ");/">"
"</div>"
"<p>"nbsp;</p>";

  每個職務的文本版本簡單地顯示標題,描述和日期以及一個"edit this post"鏈接。每個職務的表單版本有三個按鈕:

  ?"cancel"按鈕-簡單地把職務的狀態切換回文本版本。

  ?"delete this post"按鈕-把當前職務的ID發送給PHP對象以從數據庫中把它刪除。

  ?"save this post"按鈕-允許用戶把新的或編輯過的職務保存到服務器。

  處理服務器端請求通訊的核心方法有onResponse,saveNewPost,deletePost和getPost方法;還有存儲當前正操作的職務索引的一個getter和一個setter方法。這些getter/setter方法把當前索引值提供給這些核心方法,這樣正確的職務就可以用基于該索引的正確信息進行更新。下面是針對每個核心方法(不包括onResponse,因為我們以前觀察過它的功能)的簡短描述和代碼示例:

  ? 下面的saveNewPost方法通過收集并把表單輸入值發送給PHP對象來保存新的職務并且把getPost方法設置為onreadystatechange的回叫方法:

function saveNewPost(_id, _index){
 var newDescription = document.getElementById("formDescription_" _index).value;
 var newTitle = document.getElementById("formTitle_" _index).value;
 setIndex(_index);
 sendRequest("services/post.php?method=save"id=" _id ""title=" newTitle ""description=" newDescription, getPost);
}

  ? 下面的getPost方法是一個回調方法-它負責當從PHP對象收到響應時更新單獨的職務:

function getPost(){
 if(checkReadyState(request)) {
  var response = request.responseXML.documentElement;
  var _title = response.getElementsByTagName('title')[getIndex()].firstChild.data;
  var _description = response.getElementsByTagName('description')[getIndex()].firstChild.data;
  var _date = response.getElementsByTagName('date')[getIndex()].firstChild.data;

  document.getElementById("title_" getIndex()).innerHTML = _title;
  document.getElementById("description_" getIndex()).innerHTML = _description;
  document.getElementById("date_" getIndex()).innerHTML = _date;
  toggle(getIndex());
 }
}

  ? 下面的deletePost方法把當前索引作為一個請求發送給PHP對象,這最終將刪除數據庫中的記錄并以更新的職務進行響應:

function deletePost(_id){
 sendRequest("services/post.php?method=delete"id=" _id, onResponse);
}

  令人驚訝的是,最復雜的部分已經結束了。下面讓我們分析最為關鍵的部分-數據庫交互。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产精品一区二区不卡中文| 亚洲欧美中文日韩在线| 一色桃子一区二区| 精品人伦一区二区三区蜜桃免费| 精品日韩视频在线观看| 亚洲精品久久久久中文字幕二区| 成人黄色免费在线观看| 色先锋资源久久综合5566| 欧美专区日韩视频| 日本亚洲欧美成人| 中文日韩在线视频| 美日韩精品视频免费看| 97国产suv精品一区二区62| 国产精品高潮粉嫩av| 91免费看视频.| 欧美精品激情blacked18| 亚洲欧美日本另类| 国产一区二区三区网站| 国产精品久久久久久久久免费| 国产精自产拍久久久久久蜜| 大伊人狠狠躁夜夜躁av一区| 欧美电影在线观看| 亚洲午夜精品视频| 欧美精品videosex极品1| 成人高h视频在线| 欧美视频中文字幕在线| 亚洲男人的天堂在线播放| 国产精自产拍久久久久久蜜| 欧美精品中文字幕一区| 亚洲国产精品成人va在线观看| 日韩在线观看免费全集电视剧网站| 日本高清久久天堂| 日韩中文字幕在线精品| 亚洲xxxx在线| 亚洲成色www8888| 51ⅴ精品国产91久久久久久| 97国产精品人人爽人人做| 欧美日韩国产在线看| 亚洲国产天堂久久综合网| 国产主播精品在线| 91av在线免费观看| 高清欧美电影在线| 中文字幕亚洲一区| 中文字幕日韩欧美在线视频| 国产啪精品视频网站| 黄色一区二区在线| 欧美精品激情在线| 亚洲色在线视频| 欧美激情在线一区| 亚洲剧情一区二区| 久久久爽爽爽美女图片| 国产精品久久97| 国产中文日韩欧美| 欧美日韩免费区域视频在线观看| 成人激情视频在线播放| 欧美大荫蒂xxx| 久色乳综合思思在线视频| 日韩不卡中文字幕| www.99久久热国产日韩欧美.com| 精品福利在线观看| www.欧美三级电影.com| 久久黄色av网站| 51ⅴ精品国产91久久久久久| 日韩精品免费电影| 久久久免费在线观看| 超碰日本道色综合久久综合| 国产欧美精品一区二区| 136fldh精品导航福利| 亚洲xxxxx电影| 日韩精品视频在线观看免费| 在线观看久久久久久| 国产精品视频精品| 欧美日韩亚洲一区二| 亚洲精品第一页| 欧美丝袜美女中出在线| 日韩欧美在线网址| 欧美激情国产精品| 97成人超碰免| 久久99精品国产99久久6尤物| 亚洲黄色www网站| 国产精品爱久久久久久久| 久久精品91久久久久久再现| 在线观看国产成人av片| 日韩最新av在线| 国产精品1区2区在线观看| 91视频国产精品| 久久欧美在线电影| 成人欧美一区二区三区在线| 亚洲国产精品久久久久秋霞蜜臀| 国产日韩换脸av一区在线观看| 色综合男人天堂| 欧美日韩国产综合视频在线观看中文| 欧美成人免费网| 精品久久久久久久久久久久久久| 亚洲色图13p| 日韩电影中文字幕在线观看| 亚洲护士老师的毛茸茸最新章节| 黑人巨大精品欧美一区免费视频| 久久天天躁狠狠躁夜夜躁| 亚洲人成在线免费观看| 欧美在线www| 国产精品视频一区国模私拍| 国产精品久久97| 亚洲香蕉成人av网站在线观看| 成人精品在线视频| 欧美性生交大片免网| 日本精品在线视频| 亚洲国产婷婷香蕉久久久久久| 欧美理论片在线观看| 国产精品视频一区二区高潮| 亚洲精品电影久久久| 国产91精品黑色丝袜高跟鞋| 亚洲精品一区中文| 亚洲精品福利资源站| 中文字幕亚洲图片| 欧美孕妇与黑人孕交| 亚洲精品视频在线观看视频| 亚洲欧美精品suv| 国产精品午夜一区二区欲梦| 欧美视频免费在线| 久久久久久国产精品三级玉女聊斋| 国产精品永久免费视频| 亚洲自拍小视频| 亚洲性夜色噜噜噜7777| 亚洲美女福利视频网站| 国产视频精品xxxx| 亚洲国产精品久久精品怡红院| 日韩高清电影免费观看完整版| 超碰精品一区二区三区乱码| 不卡中文字幕av| 成人黄色生活片| 91av成人在线| 日韩在线精品视频| 欧美在线亚洲一区| 国产精品久久久久久久久久三级| 欧美一级淫片丝袜脚交| 精品国产一区av| 九九热r在线视频精品| 欧美www视频在线观看| 成人黄色在线观看| 成人福利免费观看| 亚洲午夜久久久久久久| 亚洲欧洲午夜一线一品| 亚洲最大福利网站| 69影院欧美专区视频| 亚洲成人亚洲激情| 成人国产在线激情| 国产精品欧美久久久| 97在线日本国产| 亚洲xxxxx电影| 91av免费观看91av精品在线| 亚洲国产欧美在线成人app| 国产精品美女在线| 91青草视频久久| 欧美性猛交xxxx偷拍洗澡| 日韩电影在线观看永久视频免费网站| 亚洲国产婷婷香蕉久久久久久| 美日韩丰满少妇在线观看| 亚洲精品美女在线观看播放| 国产精品白嫩初高中害羞小美女| 粉嫩av一区二区三区免费野| 久久综合免费视频影院| 69av在线播放| 亚洲白拍色综合图区|