Ajax技術 2018-04-07

AJAX技術

Ajax技術的概述

1.ajax的技術:Asynchronous JavaScript and XML? 異步 js and XML

2.ajax技術可以在客戶端與服務器進行數(shù)據(jù)的交互。

? ? * 使用的異步進行數(shù)據(jù)交互

? ? ? ? * 異步:先發(fā)送一個請求叶洞,但是不用等服務器端做出響應朦乏,就可以再發(fā)送一次請求蓖扑。

? ? * 傳統(tǒng)方式同步數(shù)據(jù)交互

? ? ? ? * 同步:先發(fā)送一個請求,用戶需要等待,服務器做出響應违帆。再發(fā)送一次請求。

3.使用js完成局部的刷新

? ? * 可以使用ajax技術配合js的技術可以完成的局部刷新金蜀。

4.ajax可以和服務器進行數(shù)據(jù)的交互

? ? * 傳輸純文本? ? text

? ? * 傳輸XML數(shù)據(jù)? ? ? 在js端一解析

? ? * 傳輸json數(shù)據(jù)? ? ? js端使用的一種js

5.應用的場景

? ? * 百度搜索前方。

? ? * 校驗用戶是否已經(jīng)存在。?

? ? * 省市聯(lián)動

6.ajax的優(yōu)缺點

? ? * 優(yōu)點

? ? ? ? * 用戶體驗非常好廉油。

? ? ? ? * 傳輸?shù)臄?shù)據(jù)比較小的惠险。減輕服務器端壓力。

? ? * 缺點:

? ? ? ? * 不能應用所有的場景下抒线。

? ? ? ? * 異步訪問服務器端的次數(shù)明顯增多班巩。對服務器造成了壓力。

? ? ? ? * 使用XMLHttpRequest對象(瀏覽器對它的支持不是很好嘶炭,瀏覽器有之間差異)

? ? ? ? * var xhr = new XMLHttpRequest();

? ? ? ? * 瀏覽器的差異

Ajax開發(fā)步驟(固定)

0.知道XMLHttpRequest對象抱慌,異步對象。使用該對象來完成異步發(fā)送請求和接收響應的操作眨猎。

1.第一步:先獲取XMLHttpRequest對象

? ? * 大多數(shù)瀏覽器? ? ? ? ? ? var xhr = new XMLHttpRequest();

? ? * IE6瀏覽器:? ? ? ? ? var xhr = new ActiveXObject("Msxml2.XMLHTTP");

? ? * IE5.5及其一下版本? ? ? var xhr = new ActiveXObject("Microsoft.XMLHTTP");

? ? function createXMLHttpRequest(){

? ? ? ? try{

? ? ? ? // 獲取大多數(shù)(IE高版本抑进、火狐、谷歌)

? ? ? ? return new XMLHttpRequest();

? ? ? ? }catch(e){

? ? ? ? ? ? try{

? ? ? ? ? ? ? ? // IE6

? ? ? ? ? ? ? ? return new ActiveXObject("Msxml2.XMLHTTP");

? ? ? ? ? ? }catch(e){

? ? ? ? ? ? ? ? try{

? ? ? ? ? ? ? ? ? ? // IE5.5

? ? ? ? ? ? ? ? ? ? return new ActiveXObject("Microsoft.XMLHTTP");

? ? ? ? ? ? ? ? }catch(e){

? ? ? ? ? ? ? ? ? ? alert("大哥睡陪!您到底用的什么瀏覽器八律?是您自己開發(fā)的嗎兰迫?");

? ? ? ? ? ? ? ? ? ? throw e;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

2.第二步:和服務器進行鏈接

? ? * xhr.open();

? ? * open("GET","/day23/xxx",true)方法有一些參數(shù)

? ? ? ? * 1)請求的方式(常用的GET和POST)

? ? ? ? * 2)請求資源的路徑

? ? ? ? * 3)是否是異步請求還是同步請求信殊,如果值是true,異步的請求汁果。反之涡拘。

? ? * xhr.open("GET","/day23/xxx",true);? ?

3.第三步:發(fā)送請求的數(shù)據(jù)

? ? * xhr.send();

? ? * send()方法的參數(shù):代表請求體的內容。

? ? * 如果現(xiàn)在GET請求据德,send(null)鳄乏,因為火狐瀏覽器的版本有不同,有可能接收不到你發(fā)的請求棘利。?

? ? * 如果是POST請求橱野,send("username=zhangsan&password=123")

4.接收服務器端做出的響應

? ? * 事件onreadystatechange ,監(jiān)聽xhr對象的狀態(tài)的變化赡译。

? ? xhr.onreadystatechage = function(){

? ? ? ? // 判斷對象的狀態(tài)為4仲吏,狀態(tài)碼為200

? ? ? ? if(xhr.readyState == 4 && xhr.status == 200){

? ? ? ? ? ? // 獲取響應的內容 做出操作

? ? ? ? }

? ? }

? ? * xhr對象的狀態(tài)的改變

? ? ? ? * 0 剛創(chuàng)建完xhr的對象

? ? ? ? * 1 剛鏈接服務器,但是沒有發(fā)送

? ? ? ? * 2 發(fā)送完請求,但是服務器沒有做出響應

? ? ? ? * 3 服務器端已經(jīng)做出響應裹唆,但是還沒有響應完成

? ? ? ? * 4 服務器的響應已經(jīng)完成誓斥。(使用4狀態(tài))

? ? * xhr.readyState == 4 服務器已經(jīng)響應完成了。? ? ?

? ? * 狀態(tài)碼(200 404 500 302 304)

? ? ? ? * xhr.status == 200? 一切ok

5.獲取響應的數(shù)據(jù)

? ? * 先看服務器給你發(fā)的什么數(shù)據(jù)许帐。

? ? * var text = xhr.responseText;? ? ? -- 接收純文本內容

? ? * var doc = xhr.responseXML;? ? ? ? ? ? -- 接收XML格式的字符串數(shù)據(jù)劳坑。返回是的Document對象。

Ajax基本入門案例

1.需求:頁面上有一個按鈕成畦,點擊該按鈕距芬,發(fā)送異步的請求,獲取服務器的數(shù)據(jù)循帐,動態(tài)的顯示到標簽的中間框仔。

2.客戶端

? ? * 有個按鈕? ? ? ? ? -- 觸發(fā)事件 onclick事件

? ? * 放

? ? -- 使用innerHTML屬性

3.服務器端

? ? * 接收請求

? ? * 做出響應(輸出字符串)

發(fā)送數(shù)據(jù)

1.GET方式可以發(fā)送數(shù)據(jù)

? ? * 在GET方式發(fā)送數(shù)據(jù),在地址欄上拼接數(shù)據(jù)拄养。

2.POST正常的發(fā)送數(shù)據(jù)离斩。

? ? * 需要在open()方法請求方式修改"POST"

? ? * 需要設置請求的頭信息? ? xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

? ? * 發(fā)送send()? 指定想要發(fā)送的數(shù)據(jù)

驗證用戶名是否已存在

1.需求:判斷用戶是否已經(jīng)存在。

2.分析:

? ? * 客戶端

? ? ? ? * 表單瘪匿,表單上有輸入用戶名

? ? * 服務器

? ? ? ? * 接收數(shù)據(jù)跛梗,獲取用戶輸入的用戶名,查詢數(shù)據(jù)庫棋弥,如果用戶已經(jīng)存在了核偿,給用戶提示。

3.創(chuàng)建一個數(shù)據(jù)庫

create database day23;

use day23;

create table t_user(

? ? id int primary key auto_increment,

? ? username varchar(20),

? ? password varchar(20)? ?

);

insert into t_user values (null,'aaa','aaa');

insert into t_user values (null,'bbb','bbb');

insert into t_user values (null,'eee','eee');

insert into t_user values (null,'ggg','ggg');

響應XML數(shù)據(jù)

1.在服務器端編寫的也是一個字符串顽染,格式和XML的格式是一樣的漾岳。String xml = "zhangsan";

2.客戶端

? ? * 接收數(shù)據(jù)? var doc = xhr.responseXML;? 返回的doc就是Document對象。

? ? * 做什么操作家乘。

3.服務器

? ? * 如果之前響應是字符串(text/html;charset=UTF-8)蝗羊,如果響應的XML類型的字符串(text/xml;charset=UTF-8),

省市聯(lián)動

1.需求:在我的頁面上仁锯,提供兩個下拉選擇框,一個是顯示省份翔悠,一個是顯示省份下的城市业崖。

? ? * 顯示省份的下拉框,只要是頁面一加載完成把所有的省份的信息加載到該下拉框中蓄愁。

? ? * 選擇不同的省份双炕,根據(jù)省份的信息,把該省下所有的城市生成到另一個下拉框中撮抓。

2.分析

? ? * 提供了頁面妇斤,包含兩個下拉框。提供事件onload事件(頁面一加載完,獲取所有的省份信息)

? ? * 編寫后臺的ProvinceServlet程序站超,負責解析china.xml的文件荸恕,獲取到所有的省份的信息,返回到頁面上死相,把信息加載到第一個下拉選擇框中融求。(采用字符串的方式? 北京,天津,河北....? ? )

? ? * 選擇其中的一個省份,發(fā)送一次請求算撮,請求CityServlet生宛,獲取該省份下所有的城市,做出響應肮柜,獲取到該省份所有的城市陷舅,添加到另外的一個選擇框中。(數(shù)據(jù)的格式采用 xml )

3.編寫代碼

? ? * 提供china.xml的文件? ? 導入dom4j的jar包

4.前臺的頁面

XStream把JavaBean轉換成xml(字符串類型)

1.作用:把JavaBean轉換XML的格式

2.第三方提供的jar包审洞。導入jar包莱睁。

3.演示的作用

? ? * XStream xs = new Xstream();

? ? * String xmlStr = xs.toXML(JavaBean);? ? ? -- 把JavaBean轉換成字符串類型的XML數(shù)據(jù)

JSON數(shù)據(jù)交換格式

1.用來交互數(shù)據(jù),一種交互數(shù)據(jù)的格式预明。XML也可以交換數(shù)據(jù)缩赛。

2.json有自己的數(shù)據(jù)的格式

? ? * var person = {};? person稱為一個對象撰糠。

? ? * json對象中有屬性名和屬性的值酥馍。屬性名必須使用雙引號。不能使用單引號T睦摇V继弧!J醴砚尽!。

? ? * 值是這幾種類型

? ? ? ? * null? ? ?

? ? ? ? * 數(shù)值? ? ? ? 數(shù)字類型

? ? ? ? * 字符串? ? ? ""

? ? ? ? * 數(shù)組? ? ? ? []來表示

? ? ? ? * boolean類型 true和false

3.開源的jar包

? ? * JSON-lib

? ? * 把JavaBean轉換成JSON字符串

? ? * 導入jar包

4.JSONObject

? ? * 就相當于java中的Map

? ? * put方法辉词,添加鍵值對必孤,調用toString()方法把JSON格式的字符串

? ? * JSONObject.fromObject(JavaBean)? -- 把JavaBean對象轉換成JSON格式的字符串

5.JSONArray

? ? * 就相當于java中的List集合

? ? * add(JavaBean),把JavaBean轉換JSON格式(數(shù)組格式 [])

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末瑞躺,一起剝皮案震驚了整個濱河市敷搪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幢哨,老刑警劉巖赡勘,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捞镰,居然都是意外死亡闸与,警方通過查閱死者的電腦和手機毙替,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來践樱,“玉大人厂画,你說我怎么就攤上這事∮承玻” “怎么了木羹?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長解孙。 經(jīng)常有香客問我坑填,道長,這世上最難降的妖魔是什么弛姜? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任脐瑰,我火速辦了婚禮,結果婚禮上廷臼,老公的妹妹穿的比我還像新娘苍在。我一直安慰自己,他們只是感情好荠商,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布寂恬。 她就那樣靜靜地躺著,像睡著了一般莱没。 火紅的嫁衣襯著肌膚如雪初肉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天饰躲,我揣著相機與錄音牙咏,去河邊找鬼。 笑死嘹裂,一個胖子當著我的面吹牛妄壶,可吹牛的內容都是我干的。 我是一名探鬼主播寄狼,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼丁寄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泊愧?” 一聲冷哼從身側響起狡逢,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拼卵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛮艰,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡腋腮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年雀彼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片即寡。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡徊哑,死狀恐怖,靈堂內的尸體忽然破棺而出聪富,到底是詐尸還是另有隱情莺丑,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布墩蔓,位于F島的核電站梢莽,受9級特大地震影響,放射性物質發(fā)生泄漏奸披。R本人自食惡果不足惜昏名,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望主穗。 院中可真熱鬧掂咒,春花似錦迹蛤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽置鼻。三九已至镇饮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沃疮,已是汗流浹背盒让。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留司蔬,地道東北人邑茄。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像俊啼,于是被迫代替她去往敵國和親肺缕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容