Comment passer un appel AJAX en utilisant JavaScript, sans utiliser jQuery?
javascript
ajax
discky
la source
la source
Réponses:
Avec JavaScript "vanille":
Avec jQuery:
la source
En utilisant l'extrait de code suivant, vous pouvez faire des choses similaires assez facilement, comme ceci:
Voici l'extrait:
la source
return x.responseText;
- puis je renvoie chacun desajax.send
appels.ajax.get('/test.php', {foo: 'bar'}, function(responseText) { alert(responseText); });
query.join('&').replace(/%20/g, '+')
?Je sais que c'est une question assez ancienne, mais il existe maintenant une meilleure API disponible en natif dans les nouveaux navigateurs . La
fetch()
méthode vous permet de faire des requêtes Web. Par exemple, pour demander du json à/get-data
:Voir ici pour plus de détails.
la source
<script src="https://cdn.rawgit.com/github/fetch/master/fetch.js"></script>
et utilisez fetch comme un champion.Vous pouvez utiliser la fonction suivante:
Vous pouvez essayer des solutions similaires en ligne sur ces liens:
la source
GET
, vous pouvez donc simplement les ajouter à la demande, mais pour être plus général, je suis avec vous, j'ai vraiment pensé à mettre à jour la réponse pour accepter les paramètres de la demande comme paramètre de la fonction ici , & aussi pour passer la méthode (GET
ouPOST
), mais ce qui m'a arrêté, c'est que je veux garder la réponse ici aussi simple que possible pour que les gens l'essaient aussi vite que possible. En fait, je détestais d'autres réponses parce qu'elles étaient trop longues parce qu'elles essayaient d'être parfaites :)Que diriez-vous de cette version en clair ES6 / ES2015 ?
La fonction renvoie une promesse . Voici un exemple sur la façon d'utiliser la fonction et de gérer la promesse qu'elle renvoie:
Si vous devez charger un fichier json, vous pouvez utiliser
JSON.parse()
pour convertir les données chargées en un objet JS.Vous pouvez également l'intégrer
req.responseType='json'
dans la fonction, mais malheureusement, il n'y a pas de support IE pour cela , donc je resterais avecJSON.parse()
.la source
XMLHttpRequest
vous faites une tentative asynchrone de charger un fichier. Cela signifie que l'exécution de votre code se poursuivra pendant que votre fichier se charge en arrière-plan. Pour utiliser le contenu du fichier dans votre script, vous avez besoin d'un mécanisme qui indique à votre script lorsque le chargement du fichier a échoué ou échoué. C'est là que les promesses sont utiles. Il existe d'autres moyens de résoudre ce problème, mais je pense que les promesses sont les plus pratiques.la source
Utiliser XMLHttpRequest .
Demande GET simple
Demande POST simple
Nous pouvons spécifier que la demande doit être asynchrone (true), par défaut ou synchrone (false) avec un troisième argument facultatif.
Nous pouvons définir des en-têtes avant d'appeler
httpRequest.send()
Nous pouvons gérer la réponse en définissant
httpRequest.onreadystatechange
une fonction avant d'appelerhttpRequest.send()
la source
Vous pouvez obtenir le bon objet selon le navigateur avec
Avec l'objet correct, un GET peut être résumé pour:
Et un POST pour:
la source
Je cherchais un moyen d'inclure des promesses avec ajax et d'exclure jQuery. Il y a un article sur HTML5 Rocks qui parle des promesses d'ES6. (Vous pouvez remplir une bibliothèque de promesses comme Q ). Vous pouvez utiliser l'extrait de code que j'ai copié à partir de l'article.
Remarque: j'ai également écrit un article à ce sujet .
la source
Une petite combinaison de quelques exemples ci-dessous et a créé cette pièce simple:
OU si vos paramètres sont des objets - ajustement de code supplémentaire mineur:
Les deux doivent être entièrement compatibles navigateur + version.
la source
Si vous ne voulez pas inclure JQuery, j'essaierais quelques bibliothèques AJAX légères.
Mon préféré est reqwest. C'est seulement 3,4 Ko et très bien construit: https://github.com/ded/Reqwest
Voici un exemple de demande GET avec reqwest:
Maintenant, si vous voulez quelque chose d'encore plus léger, j'essaierais microAjax à seulement 0,4 Ko: https://code.google.com/p/microajax/
C'est tout le code ici:
Et voici un exemple d'appel:
la source
Vieux mais je vais essayer, peut-être que quelqu'un trouvera cette information utile.
Il s'agit de la quantité minimale de code dont vous avez besoin pour faire une
GET
demande et récupérerJSON
des données formatées. Cela ne s'applique qu'aux navigateurs modernes comme les dernières versions de Chrome , FF , Safari , Opera et Microsoft Edge .Découvrez également la nouvelle API Fetch qui est un remplacement basé sur des promesses pour l' API XMLHttpRequest .
la source
XMLHttpRequest ()
Vous pouvez utiliser le
XMLHttpRequest()
constructeur pour créer un nouvelXMLHttpRequest
objet (XHR) qui vous permettra d'interagir avec un serveur en utilisant des méthodes de requête HTTP standard (telles queGET
etPOST
):fetch ()
Vous pouvez également utiliser la
fetch()
méthode pour obtenir unPromise
qui résout l'Response
objet représentant la réponse à votre demande:navigator.sendBeacon ()
D'un autre côté, si vous essayez simplement de
POST
données et n'avez pas besoin d'une réponse du serveur, la solution la plus courte serait d'utilisernavigator.sendBeacon()
:la source
De vousMightNotNeedJquery.com +
JSON.stringify
la source
Cela peut aider:
la source
la source
J'espère que ça aide
Step 1.
Stockez la référence à l'objet XMLHttpRequestStep 2.
Récupérer l'objet XMLHttpRequestStep 3.
Faire une demande HTTP asynchrone à l'aide de l'objet XMLHttpRequestStep 4.
Exécuté automatiquement lorsqu'un message est reçu du serveurla source
en clair JavaScript dans le navigateur:
Ou si vous souhaitez utiliser Browserify pour regrouper vos modules à l'aide de node.js. Vous pouvez utiliser un superagent :
la source
Voici un JSFiffle sans JQuery
http://jsfiddle.net/rimian/jurwre07/
la source
mon appel ajax
pour abandonner les demandes précédentes
la source
HTML:
PHP:
la source
Une très bonne solution avec du javascript pur est ici
la source
Essayez d'utiliser Fetch Api ( Fetch API )
C'est vraiment clair et 100% vanille.
la source