Jump to content
MediaWiki

Manual:Ajax

From mediawiki.org
This page is outdated.
It was written for an older version of MediaWiki and may not apply to the most recent version. If you have checked or updated this page and found the content to be suitable, please remove this notice. See the talk page for a possible discussion on this. Last update: 2025

Ajax is a term for using JavaScript to load parts of a page on demand. To use Ajax in MediaWiki, it is recommended that your JavaScript code uses jQuery.ajax(), or the mediawiki.api JavaScript module. Typically, you would perform a MediaWiki API query over Ajax.

Details

[edit ]

Asynchronous requests

[edit ]

An asynchronous request sends some data to the server, and continues execution. Some time later, the server might return a response (depending on the type of request); in which case the response will be passed to a JavaScript function for handling. Another function may be supplied to handle the case that the request fails for some reason. Below is an example call to the login API by posting the username and password.

mw.loader.using('mediawiki.api',function(){
(newmw.Api()).get({
action:'query',
lgname:'foo',
lgpassword:'foobar'
}).done(function(data){
alert(data);
});
});

Alternatively, you can use jQuery's functions directly:

$.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);
}
});

The function "mw.util.wikiScript" is available since 1.18 onwards.

Synchronous request

[edit ]

The other kind of request sends some data to the server, and waits for the response. This means that the JavaScript will be blocked until the server returns some data, or the request fails for some reason. The following example retrieves the "What links here" list of a template:

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() is a JavaScript standard function that returns an object from its string representation in JSON format.)

Cross-wiki request

[edit ]

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.

See also

[edit ]
[edit ]

General information on XMLHttpRequest:

AltStyle によって変換されたページ (->オリジナル) /