文章插圖

文章插圖
在這篇文章中,我們將介紹一些用于AJAX調用的最好的JS庫,包括jQuery,Axios和Fetch 。歡迎查看代碼示例!
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
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 =http://www.mnbkw.com/jxjc/178603/> 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 = http://www.mnbkw.com/jxjc/178603/new FormData()
data.append(‘file’, input.files[0])
data.append(‘user’, ‘blizzerand’)
fetch(‘/avatars’, {
method: ‘POST’,
body: data
})
你可以在官方的Mozilla web文檔中閱讀更多關于Fetch API的信息 。
Axios
Axios是一個基于XMLHttpRequest而構建的現代JavaScript庫,用于進行AJAX調用 。它允許你從瀏覽器和服務器發出HTTP請求 。此外,它還支持ES6原生的Promise API 。Axios的其他突出特點包括:
攔截請求和響應 。使用promise轉換請求和響應數據 。自動轉換JSON數據 。取消實時請求 。
要使用Axios,你需要先安裝它 。
npm install axios
下面是一個演示Axios行動的基本例子 。
// Make a request for a user with a given ID
axios.get(‘/user?ID=12345’)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
與Fetch相比,Axios的語法更簡單 。讓我們做一些更復雜的事情,比如我們之前使用Fetch創建的AJAX文件上傳器 。
var data = http://www.mnbkw.com/jxjc/178603/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
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 = http://www.mnbkw.com/jxjc/178603/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
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]’, ‘[email protected]’)
.field(‘friends[]’, [‘loki’, ‘jane’])
.attach(‘image’, ‘path/to/tobi.png’)
.then(callback);
如果你有興趣了解更多關于SuperAgent的信息,那么它們有一系列很不錯的文檔來幫助你開始這個旅程 。
Request——簡化的HTTP客戶端
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.
});
結論
從客戶端進行HTTP調用在十年前可不是一件容易的事 。前端開發人員不得不依賴于難以使用和實現的XMLHttpRequest ?,F代的庫和HTTP客戶端使得用戶交互、動畫、異步文件上傳等前端功能變得更加簡單 。
【ajax如何寫 編寫ajax代碼需要哪些步驟】我個人最喜歡的是Axios,因為我覺得它更易讀更賞心悅目 。你也可以忠于Fetch,因為它文檔化良好且有標準化的解決方案 。
- qq被永久封號 qq被永久封號如何解除
- excel表格怎么制作圖表 在excel如何建立圖表
- excel表格怎么做表頭不動 excel如何表頭不動
- 有年齡代溝的愛情還需要繼承嗎 戀愛有代溝如何解決
- 三星手機如何設置默認程序 Windows10如何設置默認程序
- 遠程開電腦 如何遠程啟動電腦攝像頭
- 從某一頁開始設置頁碼 word2010 如何在word某一頁開始設置頁碼
- 怎么以管理員的身份刪除文件夾 如何用管理員身份刪除文件夾
- 怎么設置excel打開密碼怎么設置 Excel如何設置打開密碼
- 如何查看虛擬機內存使用情況 查看系統虛擬內存
