User:Hippietrail/querytest.js
Note – after saving, you may have to bypass your browser’s cache to see the changes.
- Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
- Konqueror and Chrome: click Reload or press F5;
- Opera: clear the cache in Tools → Preferences;
- Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.
- This script lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • redirects • your own
// this function attempts to download the data at url.
// if it succeeds, it runs the callback function, passing
// it the data downloaded and the article argument
function download(url, callback, article) {
var http = window.XMLHttpRequest ? new XMLHttpRequest()
: window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP")
: false;
if (http) {
http.onreadystatechange = function() {
if (http.readyState == 4) {
callback(http.responseText, article);
}
};
http.open("GET", url, true);
http.send(null);
}
}
// convenience function for getting children whose keys are unknown
// such as children of pages subobjects, whose keys are numeric page ids
function anyChild(obj) {
for(var key in obj) {
return obj[key];
}
return null;
}
// tell the user a page that is linked to from article
function someLink(article) {
// use format=jsonfm for human-readable output
var url = "http://en.wiktionary.org/w/query.php?format=json&what=links&titles=" + escape(article);
download(url, finishSomeLink, article);
}
// the callback, run after the queried data is downloaded
function finishSomeLink(data, article) {
try {
// convert the downloaded data into a javascript object
eval("var queryResult=" + data);
// we could combine these steps into one line
var page = anyChild(queryResult.pages);
var links = page.links;
} catch (someError) {
alert("Oh dear, the JSON stuff went awry");
// do something drastic here
}
if (links && links.length) {
alert(links[0]["*"] + " is linked from " + article);
} else {
alert("No links on " + article + " found");
}
}
//someLink("User:Hippietrail");