1.什么是ajax
Ajax(四個單詞的縮寫,Asynchronous JavaScript and XML)是一種網友交互的開發技術
可以在頁面不刷新的情況下向服務器發送HTTP請求,並使用JavaScript處理返回的結果
發送Ajax的初衷是為了用戶的表單進行數據驗證,因為在網絡匱乏的年代發送一個請求的速度特別慢,有了Ajax之后可以大大提高表單的提交效率
2.Ajax的用途
Ajax技術在現代網頁中使用的非常廣泛,比如最常見的百度和淘寶 的相關關鍵字提醒,
注冊頁面檢測用戶是否已經存在,瀑布流效果,頁面懶加載效果都是通過Ajax實現的。
3.Ajax的特點
Ajax可以實現頁面的局部刷新,相對於頁面的整體刷新Ajax數據交互的速度更快,用戶等待的時間也更短,用戶體驗也相對較好
不僅如此Ajax還能夠提高頁面的加載速度,就是常說的懶加載效果
對於一些用戶現在瀏覽不到 的頁面選擇不加載等到頁面滾動到目標位置之后,然后通過Ajax請求服務器的數據 來顯示內容
4.ajax的使用
原生的方式請求包括四步
(1)。創建Ajax請求對象
(2)。綁定事件
(3)。初始化
(4) 。發送請求
(GET) var x = new XMLHttpRequest(); var x.readystatechanges = function(){ if(onreadyState == 4 && status == 200){ console.log(x.responseText); } x.open('GET', './server.php?id=2', true); x.send(); } (POST) xmlhttp.setRequestHeader('content-type','application/x-www-form-urlencoded'); 發送參數 send('a=100&b=www') (jquery TP5.0發送ajax) $.ajax({ url:"{:url('Order/recy_del')}", type:'POST', data:{'id':id}, success:function (res) { if(res.code==1){ layer.msg(res.msg,{icon:1,time:1500},function(){ window.location.reload() }); }else{ layer.msg(res.msg,{icon:2,time:1500},function(){ window.location.reload(); }); } }, }) (axios TP5.0發送ajax) axios.post('/wechat.php/order/xiandan',{'ajaxData':ajaxData,'sid':sid,'mid':mid,'did':did,'price':price}).then( function(res){ if(res.data){ window.location.href = '/wechat.php/order/dingdanxiangqing?id='+res.data; }else{ layer.open({skin:'msg', content: '提交訂單失敗!', time: 1.5}); } } ).catch()
AJAX 可以發送兩種類型請求, GET 和 POST , get 傳參是將參數綴到 url 的后邊, post 傳參需要把參數放置在 send 方法中.
------------------------------------------------------------------------------------------------------------------------------------------
// readyState 是 ajax 對象中的一個屬性, 用來表示ajax對象的狀態, 總共是 5 個值, 0-4
/**
0 代表未初始化
1 正在向服務端發送請求
2 已經接收完全部響應數據
3 表示正在解析數據
4 解析已經完成
*/
// status 是服務器響應的狀態碼
/**
常見的狀態碼有
200 OK
302 跳轉
304 Not Modified
403 Forbidden
404 Not Found
500 內部錯誤
*/
5. 其他的方式
除了原生方式可以發送 AJAX 請求之外, 我們在項目中一般會使用第三方的工具包來發送,
比如 jquery axios(安可C哦斯), 特別是 axios 是專門用來發送請求用的, 現在很多的單頁APP在進行服務器交互的時候 都會使用 axios.
6.數據的返回
在進行數據返回的時候,服務器一般的返回數據是json格式的 JavaScript需要對json格式的數據進行解析,解析的方式json。parse,
如果是jQuery的話可以在發送的時候指定dataType為json,那么返回的數據就直接是json的對象
7.Ajax的缺點
$.getJSON('http://b.com/server.php?callback=?',function(data){
console.log(data)
})
服務器代碼
// b.com 服務器
// server.php
$str = json_encode(['name'=>'zhangsan','age'=>20]);
echo $_GET['callback']."($str)";