Обёртка под 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>
|
Opera 7 (или какая там версия в 2003 году все еще не поддерживала AJAX?) и IE6 в большинстве проектов никому не нужны, а IE7+ поддерживает XMLHttpRequest, поэтому всю эту кучу try-catch и ненужных проверок можно убрать:
var httpAjax = function(){
this.httpAjax = new XMLHttpRequest;
}
Конструкторы в JavaScript принято именовать в стиле UpperCamelCase
function HttpAjax() {
…
}
и раз уж это конструктор, то и методы логично в прототип засунуть. |
А как же метод POST? А передача параметров запроса только через URL?
|
Octane, Вот за это спасибо=)
Но есть одно НО, если я засуну в прототип, то для всех экземпляров будет один и тот же метод. По концепции которую я пока держу в голове, у меня в каждом экземпляра класса будут переопределятся методы. ваый, Ну сейчас только GET изучил, поэтому и обёртка под него. А в дальнейшем хочу сделать что то на подобии jQuery.ajax |
1. в callback должен передаваться текст ответа и обьект XMLHttpRequest
2. всё в прототипы, но это уже сказали. 3. конструктор HttpAjax ничего не принимает ? :О это еще "чертежи", я понимаю. буду ждать, пока допилишь скрипт :) |
| Часовой пояс GMT +3, время: 09:46. |