User:Hippietrail/querytest.js

// 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");