Это просто неправильно!
Когда вы делаете вызовы ajax, вы должны забыть думать синхронно, вместо этого думать асинхронно!Отправьте запрос на некоторый URL и отправьте функцию обратного вызова, которая будет выполнена, когда запрос вернет некоторые данные.
Я написал простую оболочку для вызовов GET
// AJAX WRAPPER
MYPROJECT = {};
MYPROJECT.Ajax = (function() {
return{
// get data by AJAX call and return as plain text
get:function(url, callback) {
new Ajax.Request(url, {
method: 'get',
onSuccess: function(transport) {
var data = transport.responseText.evalJSON();
callback(data);
}
});
}
}
})();
// USAGE
MYPROJECT.Ajax.get('/ajax_json_echo/?foo=bar',function(data){
alert(data);
$('containerText').innerHTML = data.get_response.foo
});
Вы можете увидеть код в действииздесь http://jsfiddle.net/wbDhY/1/
(наберитесь терпения, окно предупреждения должно появиться через 2 секунды)