jQuery提供了6個簡化AJAX操做的函數,每一個均可以代替元素AJAX中的四步代碼!javascript
(1)$('xxx').load() jQuery對象函數php
(2)$.get() jQuery全局函數html
(3)$.post() jQuery全局函數java
(4)$.getScript() jQuery全局函數ajax
(5)$.getJSON() jQuery全局函數sql
(6)$.ajax() jQuery全局函數數據庫
1.jQuery中對AJAX操做的封裝函數之一——loadjson
用法:數組
$('選擇器').load( 'x.php' ,[data], [fn] )服務器
做用:
使用XHR發起異步的請求,獲取服務器端返回的html片斷,把xhr.responseText設置爲當前選定元素的innerHTML。響應成功完成後,會自動調用第三個回調函數。
不足:服務器返回必須是HTML片斷!響應內容會替換掉當前選定元素中已有的內容!
演示:異步加載全站的頁頭和頁尾
$(function(){
$('div#header').load('header.php');
$('div#footer').load('footer.php');
})
2.jQuery中對AJAX操做的封裝函數之二——$.get
用法:
$.get( 'x.php' ,[data], function(txt, msg, xhr){ } )
$.get( 'x.php' ,'uname=tom&age=20', function(txt, msg, xhr){ } )
$.get( 'x.php' ,{uname:'tom', age:20} , function(txt, msg, xhr){ } )
做用:
建立XHR發起異步的GET請求,第二個參數是可選的請求數據(鍵值對形式或者對象形式),獲取服務器端的響應消息,調用第三個回調函數(至關於以前成功異步請求,並對請求進行的的doResponse),在此回調函數中對響應主體進行處理。
練習:頁面加載完成後,異步請求表格中的批量數據
(1)編寫SQL:數據庫-mymovie,表-movie
(2)編寫PHP:movie_select_all.php,以JSON格式向客戶端返回全部的電影記錄 '[{},{},{}]'
(3)編寫HTML:movie_select_all.html,當頁面加載完後,異步請求全部的電影記錄,拼接在TABLE中 $.get('x.php', doResponse)
jQuery中對AJAX操做的封裝函數之三——$.post
用法:
$.post( 'x.php' ,data, function(txt, msg, xhr){ } )
$.post( 'x.php' ,'uname=tom&age=20', function(txt, msg, xhr){ } )
$.post( 'x.php' ,{uname:'tom', age:20} , function(txt, msg, xhr){ } )
做用:
建立XHR發起異步的POST請求,第二個參數是必需的請求數據(鍵值對形式或者對象形式),獲取服務器端的響應消息,調用第三個回調函數(至關於以前的doResponse),在此回調函數中對響應主體進行處理。
練習:電影數據加載完成後,當用戶點擊某個電影的「刪除」,異步提交要刪除的影片編號,實現刪除功能
步驟:
(1)編寫SQL
(2)編寫PHP:movie_delete.php,接收客戶端提交的mid,執行刪除,從數據中刪除該電影,返回'{"msg":"succ","affectedRows":1}' 或 '{"msg":"err", "sql":"DELETE...."}'
提示:PHP中的關聯數組會被json_encode()編碼爲JSON對象
(3)修改影片列表頁,點擊某個「刪除」,異步提交要刪除的影片編號,實現影片刪除
提示:爲DOM樹上後添加的元素綁定事件監聽必須用「事件代理」
4.jQuery中對AJAX操做的封裝函數之四——$.getScript
用法:
$.getScript( 'x.php' ,[data], [fn])
做用:
建立XHR發起異步的GET請求,第二個參數是可選的請求數據(鍵值對形式或者對象形式),第三個參數,回調函數可選的,表示響應成功以後的回調。要求服務器端返回的必須是application/javascript類型的響應,該方法會自動調用eval(xhr.responseText)進行執行。
5. jQuery中對AJAX操做的封裝函數之五——$.getJSON
用法:
$.getJSON( 'x.php' ,[data],function(result, msg, xhr){ })
做用:
建立XHR發起異步的GET請求。要求服務器端返回的必須是application/json類型的響應,該方法會自動調用JSON.parse(xhr.responseText)進行解析,再調用第三個參數——響應成功的回調函數處理響應結果。
$.getJSON()不論響應消息內容類型聲明什麼,都會調用JSON.parse(xhr.responseText) |
$.get()只有當響應消息內容類型聲明爲application/json,纔會調用JSON.parse(xhr.responseText) |
演示:頁面加載完成後,異步請求服務器端的實現了國際化的歡迎消息(i18n)
$.getScript()不論響應消息內容類型聲明什麼,都會調用eval(xhr.responseText) |
$.get()只有當響應消息內容類型聲明爲application/javascript,纔會調用eval(xhr.responseText) |
jQuery中對AJAX操做的封裝函數之五——$.ajax —— 重點!
用法:
$.ajax( {
type: 'GET', //POST/PUT/DELETE/HEAD
url: 'x.php',
data: 'k=v'或{k:v} //要提交的請求數據
beforeSend: fn, //請求發送以前的回調函數
success: fn, //響應成功的回調函數
error: fn, //響應失敗的回調函數
complete: fn //響應完成的回調函數-不論成敗
} )
var xhr = new XMLHttpRequest() xhr.onreadystatechange = function(){ if(xhr.readyState===4){ if(xhr.status===200){ success(); }else { error(); } complete(); } } xhr.open('GET','x.php?k=v', true) beforeSend(); xhr.send(null); |
響應成功回調順序: beforeSend => success => complete |
響應失敗回調順序: beforeSend => error => complete |
做用:
此函數是jQuery中萬能的AJAX調用函數!前面5個方法都是該方法的簡化版本。
建立XHR發起異步的GET請求。要求服務器端返回的必須是application/json類型的響應,該方法會自動調用JSON.parse(xhr.responseText)進行解析,再調用第三個參數——響應成功的回調函數處理響應結果。