H5-12.29Ajax與jquery粉渠、xml、json

四似忧、Ajax的XML

1.請求的數(shù)據(jù)格式-XML

  1)客戶端如何構(gòu)建XML格式的數(shù)據(jù)

    構(gòu)建的數(shù)據(jù)類型 - 字符串類型
    字符串的內(nèi)容要符合XML格式的語法要求

  2)服務器端如何接受符合XML格式的數(shù)據(jù)

     接收到的客戶端的請求數(shù)據(jù) - 字符串類型渣叛,php集成了DOM的相關(guān)內(nèi)容

       DOMDocument
       DOMElement
       DOMNode

2.響應的數(shù)據(jù)格式-XML

  1)服務器端如何構(gòu)建符合XML格式的數(shù)據(jù)

    設置服務器端的響應頭Content-Type值為text/xml

      header("Content-Type:text/xml");

    構(gòu)建符合XML格式的數(shù)據(jù)內(nèi)容

       手動方式構(gòu)建字符串內(nèi)容

       DOMDocument對象的方法
         loadXML(符合XML格式的字符串)
         saveXML()方式進行響應

  2)客戶端如何接受XML格式的數(shù)據(jù)

      使用XMLHttpRequest對象的responseXML屬性接收

      接收到的就是XML DOM對象(不需要進行解析)

練習:二級聯(lián)動(服務器端響應的格式為xml)

五、json

  1. JSON - javascript object notation(JS原生支持)
  2. json數(shù)據(jù)格式源于j
  3. 特點:
    易于程序員閱讀和編寫
    易于計算機解析和生成
    json是目前網(wǎng)絡上使用最廣泛的數(shù)據(jù)格式之一
  4. JSON的結(jié)構(gòu)
    Array和Object
    支持的數(shù)據(jù)類型
    字符串盯捌、數(shù)值、布爾值蘑秽、對象饺著、數(shù)組、null

六肠牲、ajax中的json格式

  1. 請求格式為json
    客戶端向服務器端發(fā)送請求為json格式的數(shù)據(jù)
    構(gòu)建符合JSON格式的字符串
    定義字符串時幼衰,保證里面使用雙引號,外面使用單引號
    服務器端接受json格式的數(shù)據(jù)
    使用json_decode()函數(shù)進行解析
    json_decode($json,true);ture代表是否轉(zhuǎn)換為數(shù)組

  2. 響應格式為json

    服務器端向客戶發(fā)送響應為json格式的數(shù)據(jù)
    手工方式構(gòu)建json格式的字符串
    使用json_encode()函數(shù)將php變量(數(shù)組)缀雳,轉(zhuǎn)換成復合json格式的字符串
    客戶端接受json格式的數(shù)據(jù)
    使用XMLHttpRequest對象的responseText屬性接受
    然后使用eval函數(shù)進行轉(zhuǎn)換,如果使用()包裹渡嚣,eval函數(shù)強制轉(zhuǎn)換為js代碼,
    var json = eval("("+data+")");

七肥印、 HTML(文本)识椰、XML格式、JSON格式的優(yōu)缺點

    HTML: 簡單深碱,但解析復雜
    XML:  構(gòu)建腹鹉、解析復雜
    JSON: 輕量級

一、jQuery中的ajax

  1. 封裝第一層 - 類似于原生ajax的用法

    $ajax

  2. 封裝第二層 - 基于第一層再次封裝

    $().load(); 
    $.post();
    $.get();
    
  3. 封裝的第三層 - 特殊用法

    $.getScript(); - 動態(tài)讀取腳本(js代碼)
    $.getJson();  - 接收json格式數(shù)據(jù)
    

二敷硅、load(url,data,callback)方法

 1. 最簡單功咒、局限性最大

     url - 設置ajax的請求地址

     data - 設置ajax的請求數(shù)據(jù)
        要求為key:value格式,其實就是js的對象格式

     callback: ajax請求成功后的回調(diào)函數(shù)
        回調(diào)函數(shù)的參數(shù)就是服務器返回的數(shù)據(jù)

 2. 服務器響應的數(shù)據(jù)自動寫入調(diào)用load方法的屬性中

 3. load()方法的請求類型

    1)沒有請求數(shù)據(jù)時绞蹦,請求類型是GET
    2) 發(fā)送請求數(shù)據(jù)時力奋,請求類型是POST

 4. load()方法接受服務器端的響應數(shù)據(jù)
    是以字符串類型(HTML格式)來接受

三、get/post()方法

  1. get(url,data,callback,type)

    1. 參數(shù)
    url - 設置ajax的請求地址
    data - 設置ajax的請求數(shù)
       要求為key:value格式幽七,其實就是js的對象格式
    callback: ajax請求成功后的回調(diào)函數(shù)
       回調(diào)函數(shù)的參數(shù)就是服務器返回的數(shù)據(jù)
    type:設置服務器端響應的數(shù)據(jù)格式
       默認為HTML景殷,還可以為xml/json
    
    1. 無論是否發(fā)送請求數(shù)據(jù),請求類型都是GET

    2. $.get()方法可以接受HTML/XML/JSON格式

  2. post(url,data,callback,type)

    使用方式跟get一模一樣

四、$.ajax(options)方法

  1. options的格式是{key:value}

  2. url:請求地址

  3. type:請求類型滨彻,默認為get

  4. async:是否異步藕届,默認為true

  5. contentType POST方式發(fā)送數(shù)據(jù)的前提

    默認值為application/x-www-form-urlencoded

  6. data:請求數(shù)據(jù),格式必須為key=value

  7. success:請求成功后的回調(diào)函數(shù)

    function(data,textStatus)

    data - 服務器響應的內(nèi)容

    textStatus - 表示ajax請求的狀態(tài)亭饵,此時的值為success

  8. error:請求失敗后的回調(diào)函數(shù)

    function(XMLHttpRequest,textStatus,errorThrown)

    XMLHttpRequest - ajax的核心對象

    errorThrown - 錯誤異常信息

    textStatus - 表示ajax請求的狀態(tài)

     error/timeout/notmodified
    
  9. dataType:數(shù)據(jù)響應格式

    HTML/XML/JSON

五休偶、使用$.getScript(url,calback)動態(tài)讀取腳本

  1. 若JS代碼過多時,會影響HTML頁面加載的速度辜羊,如果已被加載的JS代碼并不是立即執(zhí)行踏兜,只加載馬上執(zhí)行的js代碼,會提交效率

  2. 參數(shù)

    url - 讀取腳本的地址(本地或服務器)
    calback - 回調(diào)函數(shù)

六八秃、表單的Ajax異步提交 -

  1. 表單的序列化

    1)serialize() 返回的是json字符串

    使用表單元素的name屬性值
    {key:value}

    2)serializeArray() 返回的是json對象

    json對象由一個對象數(shù)組組成
    [obj1,obj2,obj3,...]

    注意:

    表單必須要有name屬性

  2. jQuery.form插件

    1)實現(xiàn)表單的異步提交碱妆,底層機制,還是使用正常的表單提交機制

    2)兩個核心方法 - 參數(shù)既是一個option參數(shù)
    ajaxForm(options)方法

       ajaxForm()不能提交表單昔驱。在document的ready函數(shù)中疹尾,使用ajaxForm來為AJAX提交表單進行準備。提交動作必須由submit開始 
    
    ajaxSubmit(option)方法
    
        ajaxSubmit()馬上由AJAX來提交表單骤肛。你可以在任何情況下進行該項提交纳本。 
    
    1. 參數(shù)

      target  服務器返回內(nèi)容所存放的元素ID
      
      beforeSubmit  提交前回調(diào)函數(shù),如果返回false腋颠,則不提交
      
      success 提交后的回調(diào)函數(shù)繁成,一般有兩個參數(shù)responseText,statusText
      
      url 默認是form的action,如果聲明淑玫,則覆蓋
      
      type  默認是form的method巾腕,如果聲明,則覆蓋
      
      dataType  html(默認),xml,script,json….接受服務端返回的類型
      
      clearForm 布爾值絮蒿,成功提交后尊搬,是否清除所有表單元素值
      
      resetForm 布爾值,成功提交后歌径,是否重置所有表單元素值
      
      timeout 限制請求時間毁嗦,大于該時間后則跳出請求
      

      http://www.cnblogs.com/popzhou/p/4338040.html

  3. 表單異步提交的方式

    1)不使用submit按鈕,而是使用button按鈕回铛,通過綁定click事件狗准,實現(xiàn)提交

    表單的序列化
    表單的異步提交
    
    1. (常用)依舊使用submit事件,在form元素中綁定onsubmit事件茵肃,在onsubmit事件的處理函數(shù)中要做如下事情

      表單的序列化
      表單的異步提交
      組織表單的默認行為

    3

七腔长、getJson()方法 - 可以實現(xiàn)跨域提交

  1. 什么叫做跨域
 跨域:

    完全跨域 - IP不同
    跨子域 - IP相同,但端口號不同

 域名:

    頂級域名 - http://www.baidu.com

    二級域名 - http://www.baidu.com/kongjian

 萬維網(wǎng)協(xié)議:

     默認是不允許跨域請求的

  服務器那邊返回的是一個函數(shù)字符串
  $.getJson("url?callback=?",function(data)  })

http://music.163.com/#/song?id=444269913

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末验残,一起剝皮案震驚了整個濱河市捞附,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖鸟召,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胆绊,死亡現(xiàn)場離奇詭異,居然都是意外死亡欧募,警方通過查閱死者的電腦和手機压状,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跟继,“玉大人种冬,你說我怎么就攤上這事√蛱牵” “怎么了娱两?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長金吗。 經(jīng)常有香客問我十兢,道長,這世上最難降的妖魔是什么摇庙? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任纪挎,我火速辦了婚禮,結(jié)果婚禮上跟匆,老公的妹妹穿的比我還像新娘。我一直安慰自己通砍,他們只是感情好玛臂,可當我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著封孙,像睡著了一般迹冤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虎忌,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天泡徙,我揣著相機與錄音,去河邊找鬼膜蠢。 笑死堪藐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挑围。 我是一名探鬼主播礁竞,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杉辙!你這毒婦竟也來了模捂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狂男,沒想到半個月后综看,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡岖食,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年红碑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片县耽。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡句喷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兔毙,到底是詐尸還是另有隱情唾琼,我是刑警寧澤,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布澎剥,位于F島的核電站锡溯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哑姚。R本人自食惡果不足惜祭饭,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叙量。 院中可真熱鬧倡蝙,春花似錦、人聲如沸绞佩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽品山。三九已至胆建,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肘交,已是汗流浹背笆载。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涯呻,地道東北人凉驻。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像魄懂,于是被迫代替她去往敵國和親沿侈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,435評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理市栗,服務發(fā)現(xiàn)缀拭,斷路器咳短,智...
    卡卡羅2017閱讀 134,626評論 18 139
  • Ajax的XML 1.請求的數(shù)據(jù)格式-XML 客戶端如何構(gòu)建XML格式的數(shù)據(jù) 構(gòu)建的數(shù)據(jù)類型 - 字符串類型 字符...
    50153465fcd8閱讀 1,287評論 1 6
  • 第1章 jQuery實現(xiàn)Ajax應用 1-1 使用load()方法異步請求數(shù)據(jù) 使用load()方法通過Ajax請...
    mo默22閱讀 1,695評論 1 9
  • 第一章 入門 基本功能:訪問和操作 dom 元素,控制頁面樣式蛛淋,對頁面的事件處理咙好,與ajax完美結(jié)合,有豐富的插件...
    X_Arts閱讀 1,029評論 0 2
  • **SF問答精選**《一》:如何引入第三方插件褐荷,調(diào)用自定義方法 **SF問答精選**《二》使用第三方庫問題勾效,swi...
    極樂叔閱讀 163評論 0 0