Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обёртка под XMLHttpRequest (https://javascript.ru/forum/misc/21151-objortka-pod-xmlhttprequest.html)

systemiv 30.08.2011 18:13

Обёртка под XMLHttpRequest
 
Пробую написать небольшую обёрточку для работы с аяксом.
Сделал пару набросков, хочу услышать Ваше мнение, стоит ли оно того?
Возможно у Вас есть свои наработки в этом вопросе.
Вот код:
var httpAjax = function(){
		try{
			this.httpAjax = new ActiveXObject('Msxml2.XMLHTTP');
		}catch(e){
			try{
				this.httpAjax = new ActiveXObject('Microsoft.XMLHTTP');
			}catch(e2){
				this.httpAjax = false;
			}
		}

		if(!this.httpAjax && typeof XMLHttpRequest != 'undefined'){
			this.httpAjax = new XMLHttpRequest();
		}
		if(!this.httpAjax){
			alert('Ошибка при создании экземпляра класса XMLHTTP.');
		}
	}
	httpAjax.requestAjax = false;
	httpAjax.callback = function(){
		alert(this.requestAjax.responseText);
	};
	httpAjax.goAjax = function(urlAjax){
		httpAjax.onreadystatechange = this.callback;
		httpAjax.open('GET', urlAjax, true);
		httpAjax.send(null);
	};

	var test = new httpAjax();
</script>
<input type="text" id="inputName" /><br />
<span style="cursor: pointer; text-decoration: underline" onclick="test.goAjax('test.php?t=1')">
Сделать запрос
</span>

Octane 30.08.2011 20:15

Opera 7 (или какая там версия в 2003 году все еще не поддерживала AJAX?) и IE6 в большинстве проектов никому не нужны, а IE7+ поддерживает XMLHttpRequest, поэтому всю эту кучу try-catch и ненужных проверок можно убрать:
var httpAjax = function(){
	this.httpAjax = new XMLHttpRequest;
}

Конструкторы в JavaScript принято именовать в стиле UpperCamelCase
function HttpAjax() {
…
}

и раз уж это конструктор, то и методы логично в прототип засунуть.

ваый 30.08.2011 21:12

А как же метод POST? А передача параметров запроса только через URL?

systemiv 30.08.2011 22:15

Octane, Вот за это спасибо=)
Но есть одно НО, если я засуну в прототип, то для всех экземпляров будет один и тот же метод.
По концепции которую я пока держу в голове, у меня в каждом экземпляра класса будут переопределятся методы.

ваый, Ну сейчас только GET изучил, поэтому и обёртка под него.
А в дальнейшем хочу сделать что то на подобии jQuery.ajax

melky 31.08.2011 08:59

1. в callback должен передаваться текст ответа и обьект XMLHttpRequest
2. всё в прототипы, но это уже сказали.
3. конструктор HttpAjax ничего не принимает ? :О

это еще "чертежи", я понимаю. буду ждать, пока допилишь скрипт :)


Часовой пояс GMT +3, время: 04:26.