Вы не можете вернуть это так, это асинхронная операция, означающая, что ваша json = JSON.parse(request.responseText)
происходит позже , когда сервер отвечает данными ... спустя много времени после вашего возвращения. Вместо этого вы можете передатьв функции, которая принимает данные, например:
function getJSON (file, callback)
{
var request = AjaxRequest();
request.onreadystatechange = function ()
{
if(request.readyState==4 && request.status==200)
{
callback(JSON.parse(request.responseText));
}
}
request.open("GET", file, false);
request.send();
}
Затем вы называете это так:
getJSON("something.json", function(data) {
//use data, your json object/data
});
Таким образом, вы используете данные, когда они доступны, передавая ихна следующую функцию ... именно так должны вести себя асинхронные вызовы.