區別:1、ajax的核心是透過xmlHttpRequest取得非本頁內容,而jsonp的核心是動態新增script標籤呼叫伺服器提供的js腳本;2、jsonp只支援get請求,而ajax支援get和post請求。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
ajax和jsonp的呼叫方式很像,目的一樣,都是請求url,然後把伺服器傳回的資料進行處理,因此jquery和ext等框架都把jsonp當作ajax的一種形式進行了封裝。下面我們來了解jsonp和ajax,並介紹它們的差異。
一、Ajax工作原理
#相當於在用戶和伺服器之間加了—個中間層(AJAX引擎),使用戶操作與伺服器響應異步化。對於使用者請求ajax引擎會做一些資料驗證和資料處理,不是所有請求都提交給伺服器,當需要從伺服器讀取新資料時由Ajax引擎代為向伺服器提交請求。 AJAX最大優點就是不刷新整個頁面的前提下與伺服器通訊維護資料。
過程:
第一步:建立一個ajax引擎對象,IE6的是new ActiveXObject,其他瀏覽器是new一個xmlHttpRequest對象;
第二步:調用open方法啟動一個請求以備發送,open方法傳入三個參數:請求類型,請求url和一個布林值;
第三個步驟:呼叫send方法發送;
第四步:處理回呼函數onreadystatechange,當readState = 4 (回應資料完成),且status=200(請求成功)時候處理回應資料。
注意:回呼函數要寫在open()和send()之前。
二、Jsonp工作原理
#動態建立一個script標籤,利用script標籤src屬性存取沒有限制來實作跨域。
web客戶端透過與呼叫腳本一樣的方式來呼叫跨網域伺服器上動態產生的js格式檔案(後綴.json),伺服器動態產生json檔案目的是將客戶端所需的資料裝入進去。
允許使用者傳遞一個callback參數給服務端,然後服務端返回資料時會將這個callback參數作為函數名稱來包裹住json數據,這樣客戶端就可以隨意自訂自己的函數來自動處理返回數據。
三、Ajax 和 jsonp的區別
ajax的核心是透過xmlHttpRequest取得非本頁內容;
jsonp的核心是動態加入script標籤呼叫伺服器提供的js腳本(後綴.json)。
jsonp是一種方式或非強制性的協議,ajax也不一定要用json格式來傳遞資料。
jsonp只支援get請求,ajax支援get和post請求。
【相關教學推薦:AJAX影片教學】
以上是jsonp和ajax的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!