AJAX是用來對伺服器進行非同步HTTP呼叫的一系列web開發技術客戶端框架,本文為大家分享了5個頂級的JavaScript Ajax元件庫
AJAX是用來對伺服器進行異步HTTP呼叫的一系列web開發技術客戶端框架。 AJAX即Asynchronous JavaScript and XML(非同步JavaScript和XML)。 AJAX曾是web開發界的常見名稱,許多受歡迎的JavaScript小工具都是使用AJAX建構的。例如,有些特定的使用者互動(如按下按鈕)會非同步呼叫伺服器,伺服器會檢索資料並將其傳回給客戶端——所有這些都不需要重新載入網頁。
JavaScript已經進化了,現在我們使用前端函式庫和/或如React、Angular、Vue等框架建立了動態的網站。 AJAX的概念也經歷了重大變化,因為現代非同步JavaScript呼叫涉及檢索JSON而不是XML。有很多函式庫允許你從客戶端應用程式對伺服器進行非同步呼叫。有些進入到瀏覽器標準,有些則有很大的使用者基礎,因為它們不但靈活且易於使用。有些支援promises,有些則使用回調。在本文中,我將介紹用於從伺服器取得資料的前5個AJAX庫。
Fetch API是XMLHttpRequest的現代替代品,用於從伺服器檢索資源。與XMLHttpRequest不同的是,它具有更強大的功能集和更有意義的命名。基於其語法和結構,Fetch不僅靈活且易於使用。但是,與其他AJAX HTTP庫區分開來的是,它具有所有現代Web瀏覽器的支援。 Fetch遵循請求-回應的方法,也就是說,Fetch提出請求並回傳解析到Response物件的promise。
你可以傳遞Request物件來獲取,或者,也可以只傳遞要取得的資源的URL。下面的範例示範了使用Fetch建立簡單的GET請求。
fetch('https://www.example.com', { method: 'get' }) .then(response => response.json()) .then(jsonData => console.log(jsonData)) .catch(err => { //error block })
如你所看到的,Fetch的then方法回傳了一個回應對象,你可以使用一系列的then 進行進一步的操作。我使用.json() 方法將回應轉換為JSON並將其輸出到控制台。
假如你需要POST表單資料或使用Fetch建立AJAX檔案上傳,會怎麼樣?此時,除了Fetch之外,你還需要一個輸入表單,並使用FormData函式庫來儲存表單物件。
var input = document.querySelector('input[type="file"]')var data = new FormData() data.append('file', input.files[0]) data.append('user', 'blizzerand') fetch('/avatars', { method: 'POST', body: data })
Axios是基於XMLHttpRequest而建構的現代JavaScript函式庫,用於進行AJAX呼叫。它允許你從瀏覽器和伺服器發出HTTP請求。此外,它還支援ES6原生的Promise API。 Axios的其他突出特點包括:
1、攔截請求和回應。
2、使用promise轉換請求和回應資料。
3、自動轉換JSON資料。
4、取消即時請求。
5、要使用Axios,你需要先安裝它。
npm install axios
以下是一個示範Axios行動的基本範例。
// Make a request for a user with a given IDaxios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
與Fetch相比,Axios的語法更簡單。讓我們做一些更複雜的事情,例如我們之前使用Fetch建立的AJAX檔案上傳器。
var data = new FormData(); data.append('foo', 'bar'); data.append('file', document.getElementById('file').files[0]); var config = { onUploadProgress: function(progressEvent) { var percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total ); } }; axios.put('/upload/server', data, config) .then(function (res) { output.className = 'container'; output.innerHTML = res.data; }) .catch(function (err) { output.className = 'container text-danger'; output.innerHTML = err.message; });
Axios更具可讀性。 Axios也非常受React和Vue等現代函式庫的歡迎。
jQuery曾經是JavaScript中的一個前線函式庫,用來處理從AJAX呼叫到操縱DOM內容的所有事情。雖然隨著其他前端函式庫的“衝擊”,其相關性有所降低,但你仍然可以使用jQuery來進行非同步呼叫。
如果你之前使用過jQuery,那麼這可能是最簡單的解決方案。但是,你將不得不匯入整個jQuery庫以使用$.ajax方法。雖然這個函式庫有特定於網域的方法,例如$.getJSON,$.get和$.post,但其語法並不像其他的AJAX函式庫那麼簡單。以下程式碼用於編寫基本的GET請求。
$.ajax({ url: '/users', type: "GET", dataType: "json", success: function (data) { console.log(data); } fail: function () { console.log("Encountered an error") } });
jQuery好的地方在於,如果你有疑問,那麼你可以找到大量的支援和文件。我發現了很多使用FormData()和jQuery進行AJAX檔案上傳的範例。以下是最簡單的方法:
var formData = new FormData(); formData.append('file', $('#file')[0].files[0]); $.ajax({ url : 'upload.php', type : 'POST', data : formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType success : function(data) { console.log(data); alert(data); } });
SuperAgent是一個輕量級和漸進式的AJAX函式庫,更著重於可讀性和靈活性。 SuperAgent還擁有溫和的學習曲線,不像其他庫。它有一個針對Node.js API相同的模組。 SuperAgent有一個接受GET、POST、PUT、DELETE和HEAD等方法的請求物件。然後你可以呼叫.then(),.end()或新的.await()方法來處理回應。例如,以下程式碼為使用SuperAgent的簡單GET請求。
request .post('/api/pet') .send({ name: 'Manny', species: 'cat' }) .set('X-API-Key', 'foobar') .set('Accept', 'application/json') .then(function(res) { alert('yay got ' + JSON.stringify(res.body)); });
如果你想要做更多的事情,例如使用此AJAX庫上傳文件,那該怎麼做呢?同樣超級easy。
request .post('/upload') .field('user[name]', 'Tobi') .field('user[email]', 'tobi@learnboost.com') .field('friends[]', ['loki', 'jane']) .attach('image', 'path/to/tobi.png') .then(callback);
Request函式庫是進行HTTP呼叫最簡單的方法之一。結構和語法與在Node.js中處理請求的方式非常相似。目前,該專案在GitHub上有18K個星,值得一提的是,它是可用的最受歡迎的HTTP庫之一。以下是一個例子:
var request = require('request'); request('http://www.google.com', function (error, response, body) { console.log('error:', error); // Print the error if one occurred console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received console.log('body:', body); // Print the HTML for the Google homepage. });
個人最喜歡的是Axios,因為它更易讀更賞心悅目。你也可以忠於Fetch,因為它文檔化良好且有標準化的解決方案。
以上就是本章的全部內容,更多相關教學請訪問JavaScript影片教學!
以上是分享5個頂級的JavaScript Ajax元件庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!