Ajax est une technologie utilisée pour créer des applications Web meilleures, plus rapides et plus interactives. Cet article vous montrera comment utiliser JavaScript pour effectuer des appels et des requêtes AJAX.
Dans ce tutoriel, nous allons apprendre à passer des appels AJAX en utilisant JS.
Le terme AJAX signifie JavaScript et XML asynchrones.
AJAX est utilisé dans JS pour effectuer des requêtes réseau asynchrones afin d'obtenir des ressources. Bien entendu, comme leur nom l'indique, les ressources ne se limitent pas au XML, mais peuvent également être utilisées pour obtenir des ressources telles que JSON, HTML ou du texte brut.
Il existe plusieurs façons d'effectuer des requêtes réseau et d'obtenir des données du serveur. Nous les présenterons un par un.
XMLXMLHttpRequest
car il est utilisé pour récupérer des données XML en premier lieu. Désormais, il peut également être utilisé pour récupérer du JSON, du HTML ou du texte brut.
Exemple 2.1 : GET
function success() { var data = JSON.parse(this.responseText) console.log(data) } function error (err) { console.log('Error Occurred:', err) } var xhr = new XMLHttpRequest() xhr.onload = success xhr.onerror = error xhr.open("GET", ""https://jsonplaceholder.typicode.com/posts/1") xhr.send()
On voit que pour faire une simple requête GET, deux auditeurs sont nécessaires pour gérer la requête de succès et échec. Nous devons également appeler les méthodes et . La réponse du serveur est stockée dans une variable , qui est convertie en objet JavaScript à l'aide de .
function success() { var data = JSON.parse(this.responseText); console.log(data); } function error(err) { console.log('Error Occurred :', err); } var xhr = new XMLHttpRequest(); xhr.onload = success; xhr.onerror = error; xhr.open("POST", "https://jsonplaceholder.typicode.com/posts"); xhr.setRequestHeader("Content-Type", "application/json; charset=UTF-8"); xhr.send(JSON.stringify({ title: 'foo', body: 'bar', userId: 1 }) );
On voit que les requêtes POST sont similaires aux requêtes GET. Nous devons en outre définir l'en-tête de requête "Content-Type" en utilisant open()
et envoyer le corps JSON sous forme de chaîne en utilisant send()
dans la méthode d'envoi. responseText
JSON.parse()
2.3 XMLHttpRequest vs FetchsetRequestHeader
JSON.stringify
Les premiers développeurs utilisent pour demander des données depuis de nombreuses années. Le moderne nous permet de faire des requêtes réseau similaires à . La principale différence est que l'API utilise des
Promises, ce qui rend l'API plus simple et plus concise et évite l'enfer des rappels. XMLHttpRequest
fetch API
XMLHttpRequest(XHR)
3. API Fetchfetch()
Fetch est une API JavaScript native permettant d'effectuer des appels AJAX. Elle est prise en charge par la plupart des navigateurs et est désormais largement utilisée.
fetch(url, options) .then(response => { // handle response data }) .catch(err => { // handle errors });
Paramètres de l'API L'API a deux paramètres
1.url
est un paramètre obligatoire, qui est le chemin de la ressource que vous souhaitez obtenir.fetch()
2,
méthode : GET | POST | PUT | DELETE | PATCH
options
en-têtes de requête, tels que le mode
cache : par défaut | no-cache{ “Content-type”: “application/json; charset=UTF-8” }
Sera rejeté s'il y a une erreur réseau, qui est gérée dans le bloc
.fetch()
Si la réponse du serveur est accompagnée d'un code d'état (tel que
.catch()
. 200
404
Gestion des erreurs 500
.then()
(ressource introuvable) et (erreur interne du serveur)), l'état de l'API est également
et nous devons les gérer explicitement dans le bloquer. 200
404
Nous pouvons voir le statut HTTP dans l'objet 500
: fetch()
resolved
.then()
Code de statut HTTP, par exemple 200.
ok – Valeur booléenne, ou response
si le code d'état HTTP est 200-299.
true
const getTodoItem = fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .catch(err => console.error(err)); getTodoItem.then(response => console.log(response));
Il y a deux choses à noter dans le code ci-dessus :
L'API renvoie un objet de promesse que nous pouvons attribuer à une variable et exécuter plus tard. pour convertir l'objet de réponse en JSONfetch
Gestion des erreursresponse.json()
Response { userId: 1, id: 1, title: "delectus aut autem", completed: false }
GET
Cela signifie que si nous utilisons l'
fetch('http://httpstat.us/500') // this API throw 500 error .then(response => () => { console.log("Inside first then block"); return response.json(); }) .then(json => console.log("Inside second then block", json)) .catch(err => console.error("Inside catch block:", err));
then()
catch()
3.3 Exemple : POST fetch()
fetch('https://jsonplaceholder.typicode.com/todos', { method: 'POST', body: JSON.stringify({ completed: true, title: 'new todo item', userId: 1 }), headers: { "Content-type": "application/json; charset=UTF-8" } }) .then(response => response.json()) .then(json => console.log(json)) .catch(err => console.log(err))
Response ➤ {completed: true, title: "new todo item", userId: 1, id: 201}
在上面的代码中需要注意两件事:-
POST
请求类似于GET
请求。 我们还需要在fetch()
API的第二个参数中发送method
,body
和headers
属性。
我们必须需要使用 JSON.stringify()
将对象转成字符串请求body
参数
Axios API非常类似于fetch API,只是做了一些改进。我个人更喜欢使用Axios API而不是fetch()
API,原因如下:
axios.get()
,为 POST 请求提供 axios.post()
等提供不同的方法,这样使我们的代码更简洁。catch()
块中处理的错误,因此我们无需显式处理这些错误。4.1 示例:GET
// 在chrome控制台中引入脚本的方法 var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://unpkg.com/axios/dist/axios.min.js'; document.head.appendChild(script);
axios.get('https://jsonplaceholder.typicode.com/todos/1') .then(response => console.log(response.data)) .catch(err => console.error(err));
Response { userId: 1, id: 1, title: "delectus aut autem", completed: false }
我们可以看到,我们直接使用response获得响应数据。数据没有任何解析对象,不像fetch()
API。
错误处理
axios.get('http://httpstat.us/500') .then(response => console.log(response.data)) .catch(err => console.error("Inside catch block:", err));
Inside catch block: Error: Network Error
我们看到,500错误也被catch()
块捕获,不像fetch()
API,我们必须显式处理它们。
4.2 示例:POST
axios.post('https://jsonplaceholder.typicode.com/todos', { completed: true, title: 'new todo item', userId: 1 }) .then(response => console.log(response.data)) .catch(err => console.log(err))
{completed: true, title: "new todo item", userId: 1, id: 201}
我们看到POST方法非常简短,可以直接传递请求主体参数,这与fetch()API不同。
更多编程相关知识,请访问:编程视频!!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!