Albert22
Старатель
- Регистрация
- 30 Мар 2008
- Сообщения
- 270
- Реакции
- 11
- Автор темы
- #1
Как сделать чтобы JS функция возвращала значение?
Вот имеется функция на базе XMLHTTPRequest:
Но выделенный выше жирненьким параметр гласит о том, что запрос асинхронен, да и сама конструкция функции тоже всем своим видом какбы говорит нам. Поэтому браузер тупит и виснет пока не выполнит её (=не дождётся ответа от сервера). Вот её переписанный тестовый асинхронный вариант:
Но что-то нестабильно работает, возвращает пустые значения. Всё утро ломаю голову как исправить чтоб возвращалось нормальное полученное от сервера значение. С тем, кстати, всё нормально, проверено на синхронном варианте. Помогите пожалуйста, а то уже я туплю и висну... Заранее спасибо.
P.S. Полученный json я декодирую mootools'ом. Знаю, что в него встроен ещё и механизм запросов, но он какой-то уж больно рекурсивный, и я в нём ничуть не разобрался. Интересуюсь: он вообще намного лучше/эффективнее вот такого XMLHTTPRequestа? Стоит раскапывать?
Вот имеется функция на базе XMLHTTPRequest:
Код:
function jsonRequest(url) {
http_request = prepareRequest();
http_request.open('GET', url, [B]false[/B]);
http_request.send(null);
if ( http_request.readyState == 4 ) {
if ( http_request.status == 200 ) {
var result=http_request.responseText;
} else {
alert("Error!");
}
http_request = null;
}
return (result);
}
Код:
var jsonResult = '';
function jsonRequest(url) {
http_request = prepareRequest();
http_request.open('GET', url, true);
http_request.onreadystatechange = function() { getJsonResponse(http_request); }
http_request.send(null);
alert(jsonResult);
//return (jsonResult);
}
function getJsonResponse(http_request) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
jsonResult='Response: '+http_request.responseText;
return(jsonResult);
}}
}
P.S. Полученный json я декодирую mootools'ом. Знаю, что в него встроен ещё и механизм запросов, но он какой-то уж больно рекурсивный, и я в нём ничуть не разобрался. Интересуюсь: он вообще намного лучше/эффективнее вот такого XMLHTTPRequestа? Стоит раскапывать?