Задать вопрос
aaadddminnn
@aaadddminnn
php it ubuntu debian

Как вернуть xhr.responseText из функции?

Всем привет. Решил я писать на чистом js всё. Начал роботу с обвёртки (дабы избежать кучу одинакового кода)
Вот код что я сделал сейчас
//делаем XMLHttpRequest кроссбраузерным
var XMLHttpRequest = XMLHttpRequest || window.ActiveXObject && function () {
    return new ActiveXObject('Msxml2.XMLHTTP');
};

//синхронный get запрос
function get_s(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('get', url, false);
    xhr.send(null);
    return xhr.responseText;
}

//асинхронный get запрос
function get_as(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('get', url, true);
    (function () {
        if (xhr.readyState == 4) {
            return xhr.responseText;
        } else {
            setTimeout(arguments.callee, 10);
        }
    })();
    xhr.send(null);

}

Проблема в том что не могу во второй функции вывести ответ. Как надо правильно не пойму(
Зарание спасибо за помощь
  • Вопрос задан
  • 591 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Вам надо учебник почитать, методом тыка вы не научитесь. Почитайте вопросы по тегу js - вопрос про возврат значения из асинхронной функции задают три раза в день.
Ответ написан
Если нужен пакет только для ajax, как вариант superagent. Простой и красивый api
https://github.com/visionmedia/superagent
Ответ написан
Комментировать
MTonly
@MTonly
Веб-разработчик с 2002 года
Перед xhr.send() задайте функцию обратного вызова:

xhr.onreadystatechange = function() {
	if (4 !== xhr.readyState) {
		return;
	}

	// Код, который следует выполнить при получении успешного ответа.
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы