Обёртка под 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, время: 04:26. |