function vote(url, callback) {
var req = createXmlHttpRequestObject();
var result;
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
result = req.responseText;
if (typeof callback === 'function')
callback.call(this, result);
}
}
req.open("GET", url, true);
req.send(null);
}
vote('url', function(response){
alert(response);
});
Привыкайте к асинхронному программированию.
req.onreadystatechange - обработчик события (а оно происходит не сразу), т.е. представьте вот так.
function vote(url) {
var req = createXmlHttpRequestObject();
var result;
//req.onreadystatechange определяем обработчик события, но для наглядности не будем брать это во внимание
req.open("GET", url, true);
req.send(null);
}
console.log(vote(url)); // >>> undefined
по событию readystatechange, т.е. через некоторое время, когда с сервера придет ответ, выполнится
if (req.readyState == 4 && req.status == 200) {
result = req.responseText;
return result;
}