Manual:Ajax/fr
![]() | Cette page est obsolète. |
Ajax est le terme employé pour JavaScript quand il sert à charger des parties de page à la demande.
Ainsi, pour utiliser Ajax dans MédiaWiki, il est recommandé d'utiliser jQuery.ajax()
(ou le module JavaScript mediawiki.api). On fera ainsi une requête à l' API MediaWiki sur Ajax.
Détails
Demandes asynchrones
Une requête dite asynchrone envoie ses données vers le serveur, puis continue son exécution. Quelques temps après, le serveur peut renvoyer une réponse (selon le type de la requête qu'il a reçue), auquel cas celle-ci sera transmise à une fonction JavaScript pour être traitée. Une autre fonction peut être fournie pour gérer les cas où la requête échoue pour une raison quelconque. Vous trouverez ci-dessous un exemple d'appel à l'API de connexion avec l'envoi du nom d'utilisateur et du mot de passe.
mw.loader.using( 'mediawiki.api', function () {
( new mw.Api() ).get( {
action: 'query',
lgname: 'foo',
lgpassword: 'foobar'
} ).done( function ( data ) {
alert( data );
} );
} );
Alternativement vous pouvez utiliser les fonctions jQuery directement :
$.ajax({
// request type ( GET or POST )
type: "GET",
// the URL to which the request is sent
url: mw.util.wikiScript('api'),
// data to be sent to the server
data: { action:'query', format:'json', lgname:'foo', lgpassword:'foobar' },
// The type of data that you're expecting back from the server
dataType: 'json',
// Function to be called if the request succeeds
success: function( jsondata ){
alert( jsondata.result );
}
});
La fonction « mw.util.wikiScript » n'est disponible que depuis la version 1.18 .
Requêtes synchronisées
L'autre type de requête (les requêtes synchrones) consiste à envoyer des données au serveur et à attendre la réponse. Cela signifie que JavaScript restera bloqué le temps que le serveur renvoie des données, ou que la requête échoue pour quelque raison. L'exemple suivant récupère la liste des modèles de « Pages liées » :
whatLinksHere = JSON.parse(
$.ajax({
url:mw.util.wikiScript('api'),
data: { action: 'query', format: 'json', list: 'embeddedin', eititle: 'Template:' + templateName, eilimit: 500 },
async: false
})
.responseText
);
// ... usage ...
for (i=0; i<whatLinksHere.query.embeddedin.length; i+=1) {
alert(whatLinksHere.query.embeddedin[i]);
}
(JSON.parse()
est une fonction standard JavaScript qui renvoie un objet à partir de sa représentation sous forme de chaîne en format JSON).
Cross-wiki request
If you want to get data from a wiki that is hosted at a different domain than the current one, you will have to use Cross-Origin Resource Sharing (CORS) to make the request.
Most of the time, adding origin=*
to the request parameters should be sufficient.
Voir aussi
- Catégorie:Extensions Ajax - Extensions utilisant l'interface Ajax de MediaWiki.
Liens externes
- mediawiki.api (module JavaScript)
- jQuery.ajax (méthode jQuery)
Informations générales à propos de XMLHttpRequest :
- Spécifications de XMLHttpRequest sur W3.org
- XMLHttpRequest sur Wikipedia
- XMLHttpRequest sur MDN