Table des matières
Utilisation de fetch
Récupérer les problèmes et les solutions
兼容解决方案
哪些情况可以放弃使用fetch
Maison interface Web js tutoriel Que sont $.ajax, axios et fetch ? Explication détaillée de la façon d'utiliser fetch

Que sont $.ajax, axios et fetch ? Explication détaillée de la façon d'utiliser fetch

Oct 17, 2018 pm 03:04 PM
ajax axios fetch javascript

Cet article vous présentera respectivement ce que sont $.ajax, axios et fetch, afin que vous puissiez en savoir plus sur la façon d'utiliser fetch. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

  • AjaxQu'est-ce que c'est ?

Réponse : Ajax est une technologie qui peut utiliser le transfert de données asynchrone (requête HTTP) entre le navigateur et le serveur. Utilisez ceci pour permettre à une page de demander une petite quantité de données sans avoir à actualiser la page entière. Afin de rafraîchir une partie du contenu d’une page traditionnelle (sans utiliser Ajax), la page Web entière doit être rechargée.

  • Ajax Sur base de quoi ?

Réponse : Elle est basée sur XMLHttpRequest (XHR). Il s'agit d'une API relativement grossière qui ne respecte pas le principe de conception de séparation des préoccupations (Separation of Concerns) et n'est pas si conviviale à configurer et à utiliser. Quel est le parcours de

  • $.ajax ?

Réponse : Pour les raisons ci-dessus, diverses bibliothèques ajax sont référencées, mais la plus célèbre est $.ajax() dans l'API jQuery. $.ajax() L'un de ses avantages est le fonctionnement asynchrone, mais le fonctionnement asynchrone de jQuery est un modèle asynchrone basé sur des événements, ce qui n'est pas aussi convivial que promis.

  • fetch Fond généré ?

Réponse : Sur la base des différents facteurs mentionnés ci-dessus, l'API fetch a vu le jour. Mais il est facile à utiliser et présente quelques problèmes (ce problème sera discuté en détail ci-dessous et les solutions correspondantes seront expliquées), couplés à des problèmes de compatibilité (IE ne le prend pas du tout en charge), c'est pourquoi de nombreux développeurs utilisent axios . Bibliothèque tripartite.

  • Bibliothèque qui prend en charge la promesse (axios) ?

Réponse : axios Cette bibliothèque est désormais une solution industrielle relativement courante. axios L'une des raisons de sa popularité est ses promesses, et une autre raison est la popularité de la bibliothèque basée sur les opérations de données. (vue.js, angulaire.js, réagir.js, etc.), alors que le jQuery traditionnel est une bibliothèque basée sur les opérations DOM. Mais il a aussi des défauts, c'est-à-dire qu'avant de l'utiliser, nous devons nous assurer que la bibliothèque a été introduite.

En fait, personnellement, je préfère utiliser fetch. Si vous rencontrez des problèmes de compatibilité lors du développement, vous n'avez besoin que d'une récupération isomorphe sans introduire de bibliothèque supplémentaire. Concentrons-nous sur la récupération.

Utilisation de fetch

fetch(url, options)
    .then(response => console.log(responese))
    .catch(err => console.log(err))
Copier après la connexion

url : adresse d'accès
options : paramètres de configuration communs
réponse : objet de retour de demande

configuration des paramètres de demandeoptions Pour plus de détails, veuillez vous référer à MDN fetch

Récupérer les problèmes et les solutions

  1. Vous avez besoin de deux étapes pour obtenir les données

fetch('https://api.github.com/users/lvzhenbang/repos')
    .then(res => {
        console.log(res)
        return res.text()
    }).then(data => {
        console.log(data)
    })
Copier après la connexion

Grâce au code ci-dessus, vous pouvez constater qu'il n'y a aucune donnée dans l'objet Response renvoyé par impression directe. Pour obtenir les données requises, vous devez passer par une méthode intermédiaire response.text() (fetch propose 5 méthodes. )

D'un autre côté, axios est beaucoup plus pratique à utiliser. L'objet Response qu'il renvoie contient des données dans l'attribut data. Le code de référence est le suivant :

axios.get('https://api.github.com/users/lvzhenbang/repos')
    .then(res => console.log(res));
Copier après la connexion

Bien sûr, ce n'est pas un gros problème, mais c'est un peu gênant à utiliser.

  1. La demande de récupération par défaut est non cookie

pour résoudre ce problème, vous devez configurer options{credentials: 'include'} >

  1. Toutes les erreurs de requête ne seront pas

    reject

C'est-à-dire que la méthode

ne peut pas détecter toutes les erreurs lorsqu'une erreur se produit. , vous pouvez utiliser un Lorsqu'il est exprimé sous la forme d'un code d'état (comme 404, 500, etc.), le catch renvoyé par fetch n'aura pas de rejet Promise n'est valable qu'en cas de panne du réseau. ou la demande est bloquée. catch

Pour résoudre ce problème, nous pouvons déterminer si le

dans l'objet Response est vrai. Sinon, utilisez ok pour ajouter manuellement un Promise. Le code de référence est le suivant : reject

fetch('https://api.github.com/usrs/lvzhenbang/repos')
    .then(res => {
        if (res.ok) {
            return res.text()
        } else {
            return Promise.reject('请求失败')
        }
    }).then(data => {
        console.log(data)
    }).catch(err => {
        console.log(err)
    })
Copier après la connexion
Si vous n'ajoutez pas

manuellement, reject sera imprimé, ce qui n'est pas ce que nous souhaitons. Bien sûr, utiliser undefined ne le fait pas. devez considérer ce problème. Le code est le suivant :axios

axios.get('https://api.github.com/usrs/lvzhenbang/repos')
    .then(res => console.log(res))
    .catch(err => console.log(err));
Copier après la connexion
Optimisation de la récupération

Puisque la méthode

renvoie un res.text(), vous pouvez appeler promise directement ; de plus, afin de garantir que toutes les erreurs renvoient un format unifié (toutes renvoient un .then), le code ci-dessus peut être optimisé comme suit : Promise

fetch('https://api.github.com/usrs/lvzhenbang/repos')
    .then(res => {
        return res.text()
            .then(data => {
                if (res.ok) {
                    return data
                } elese {
                    return Promise.reject(json)
                }
            })
    }).then(data => {
        console.log(data)
    }).catch(err => {
        console.log(err)
    })
Copier après la connexion
Les étudiants qui ont joué à express/koa, ou avoir une certaine compréhension du backend, savoir que le serveur est dans un certain Dans certains cas, certaines informations rapides seront renvoyées, alors comment y faire face ? Les invites d'erreur courantes incluent un code d'état (statut) et un message d'invite (msg). Le code est modifié comme suit :

serveur :

res.status(404).send({
    err: 'not found'
})
Copier après la connexion
client :

.

fetch('https://api.github.com/usrs/lvzhenbang/repos')
    .then(handleResponse).then(data => {
        console.log(data)
    }).catch(err => {
        console.log(err)
    })

function handleResponse (res) { 
    return Promise.reject(Object.assign({}, res.text(), {
        status: res.status,
        msg: res.statusText
    }))
}
Copier après la connexion

兼容解决方案

以上问题解决并优化fetch的使用后,发现fetch还是一个不错的选择。针对不同使用情况可以作如下处理:

首先,要引入 es5-shim 解决fetch这个新特性的同构;

其次,要引入 es6-promise 解决promise的兼容问题;

然后,引入 fetch-ie8 解决fech的同构问题;

最后,引入 fetch-jsonp 解决跨域问题。

当然,你也不需要针对性的解决这些问题,GitHub团队提供了一个polyfill解决方案,你不需要一步步的是实现。只需要两步:

  1. 安装 fetch package

    npm install whatwg-fetch --save

  2. 在使用的模块引入 fetch

import 'whatwg-fetch'

window.fetch(url, options)
Copier après la connexion

其他的使用和 fetch 则这个原生的API雷同。

哪些情况可以放弃使用fetch

  1. 获取Promsie的状态,如:isRejected, isResolved

  2. 如果使用习惯了jquery的progress方法的,或者使用deffered的一些方法

具体 fetch 实现了哪些与jquery类似的方法可参考whatwg-ftch 或者 fetch-issue


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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre l'erreur 403 rencontrée par la requête jQuery AJAX Comment résoudre l'erreur 403 rencontrée par la requête jQuery AJAX Feb 20, 2024 am 10:07 AM

Titre : Méthodes et exemples de code pour résoudre les erreurs 403 dans les requêtes jQuery AJAX L'erreur 403 fait référence à une demande selon laquelle le serveur interdit l'accès à une ressource. Cette erreur se produit généralement parce que la demande manque d'autorisations ou est rejetée par le serveur. Lorsque vous effectuez des requêtes jQueryAJAX, vous rencontrez parfois cette situation. Cet article explique comment résoudre ce problème et fournit des exemples de code. Solution : Vérifiez les autorisations : assurez-vous d'abord que l'adresse URL demandée est correcte et vérifiez que vous disposez des autorisations suffisantes pour accéder à la ressource.

Comment résoudre l'erreur 403 de la requête jQuery AJAX Comment résoudre l'erreur 403 de la requête jQuery AJAX Feb 19, 2024 pm 05:55 PM

jQuery est une bibliothèque JavaScript populaire utilisée pour simplifier le développement côté client. AJAX est une technologie qui envoie des requêtes asynchrones et interagit avec le serveur sans recharger la page Web entière. Cependant, lorsque vous utilisez jQuery pour effectuer des requêtes AJAX, vous rencontrez parfois des erreurs 403. Les erreurs 403 sont généralement des erreurs d'accès refusé par le serveur, probablement en raison de problèmes de politique de sécurité ou d'autorisation. Dans cet article, nous verrons comment résoudre la requête jQueryAJAX rencontrant une erreur 403.

Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Mar 09, 2024 pm 05:36 PM

L'utilisation d'Ajax pour obtenir des variables à partir de méthodes PHP est un scénario courant dans le développement Web. Grâce à Ajax, la page peut être obtenue dynamiquement sans actualiser les données. Dans cet article, nous présenterons comment utiliser Ajax pour obtenir des variables à partir de méthodes PHP et fournirons des exemples de code spécifiques. Tout d’abord, nous devons écrire un fichier PHP pour gérer la requête Ajax et renvoyer les variables requises. Voici un exemple de code pour un simple fichier PHP getData.php :

Comment résoudre le problème de l'erreur 403 jQuery AJAX ? Comment résoudre le problème de l'erreur 403 jQuery AJAX ? Feb 23, 2024 pm 04:27 PM

Comment résoudre le problème de l’erreur 403 jQueryAJAX ? Lors du développement d'applications Web, jQuery est souvent utilisé pour envoyer des requêtes asynchrones. Cependant, vous pouvez parfois rencontrer le code d'erreur 403 lors de l'utilisation de jQueryAJAX, indiquant que l'accès est interdit par le serveur. Cela est généralement dû aux paramètres de sécurité côté serveur, mais il existe des moyens de résoudre le problème. Cet article explique comment résoudre le problème de l'erreur 403 jQueryAJAX et fournit des exemples de code spécifiques. 1. faire

PHP et Ajax : créer un moteur de suggestions de saisie semi-automatique PHP et Ajax : créer un moteur de suggestions de saisie semi-automatique Jun 02, 2024 pm 08:39 PM

Créez un moteur de suggestions de saisie semi-automatique en utilisant PHP et Ajax : Script côté serveur : gère les requêtes Ajax et renvoie des suggestions (autocomplete.php). Script client : envoyer une requête Ajax et afficher des suggestions (autocomplete.js). Cas pratique : Incluez le script dans la page HTML et spécifiez l'identifiant de l'élément d'entrée de recherche.

PHP vs Ajax : solutions pour créer du contenu chargé dynamiquement PHP vs Ajax : solutions pour créer du contenu chargé dynamiquement Jun 06, 2024 pm 01:12 PM

Ajax (Asynchronous JavaScript et XML) permet d'ajouter du contenu dynamique sans recharger la page. En utilisant PHP et Ajax, vous pouvez charger dynamiquement une liste de produits : HTML crée une page avec un élément conteneur et la requête Ajax ajoute les données à l'élément après l'avoir chargé. JavaScript utilise Ajax pour envoyer une requête au serveur via XMLHttpRequest afin d'obtenir des données produit au format JSON à partir du serveur. PHP utilise MySQL pour interroger les données produit de la base de données et les encoder au format JSON. JavaScript analyse les données JSON et les affiche dans le conteneur de pages. Cliquer sur le bouton déclenche une requête Ajax pour charger la liste de produits.

PHP et Ajax : moyens d'améliorer la sécurité d'Ajax PHP et Ajax : moyens d'améliorer la sécurité d'Ajax Jun 01, 2024 am 09:34 AM

Afin d'améliorer la sécurité Ajax, il existe plusieurs méthodes : Protection CSRF : générer un token et l'envoyer au client, l'ajouter côté serveur dans la demande de vérification. Protection XSS : utilisez htmlspecialchars() pour filtrer les entrées afin d'empêcher l'injection de scripts malveillants. En-tête Content-Security-Policy : limite le chargement de ressources malveillantes et spécifie les sources à partir desquelles les scripts et les feuilles de style peuvent être chargés. Valider les entrées côté serveur : validez les entrées reçues des requêtes Ajax pour empêcher les attaquants d'exploiter les vulnérabilités d'entrée. Utilisez des bibliothèques Ajax sécurisées : profitez des modules de protection CSRF automatiques fournis par des bibliothèques telles que jQuery.

Échange de données asynchrone à l'aide des fonctions Ajax Échange de données asynchrone à l'aide des fonctions Ajax Jan 26, 2024 am 09:41 AM

Comment utiliser les fonctions Ajax pour réaliser une interaction de données asynchrone Avec le développement de la technologie Internet et Web, l'interaction des données entre le front-end et le back-end est devenue très importante. Les méthodes traditionnelles d’interaction avec les données, telles que l’actualisation des pages et l’envoi de formulaires, ne peuvent plus répondre aux besoins des utilisateurs. Ajax (JavaScript asynchrone et XML) est devenu un outil important pour l'interaction de données asynchrones. Ajax permet au Web d'utiliser JavaScript et l'objet XMLHttpRequest

See all articles