короче, суть в том, что нужно мне было сделать штуку, чтобы удобно было делать запросы через ajax и не менее удобно обрабатывать ответы от них.
так вот, если раньше я таскал за собой или дикий кусок js, изменять который было сложно или некий фреймворк типа jQuery, то теперь я сделал простенький объект, который делает всю грязную работ,. а мне остается только передать параментры и функцию обработки, и поскольку я не жадный, то нате:
if (typeof jsAjax == "undefined" || !jsAjax) {
var jsAjax = {};
}jsAjax.ajax = typeof jsAjax.ajax != 'undefined' && jsAjax.ajax ? jsAjax.ajax : function(o) {
var url = (typeof o === 'string') ? o : o.url;
var callback = (typeof o.callback === 'undefined') ? function() {} : o.callback;
var method = (typeof o.method === 'undefined') ? 'GET' : o.method;
var type = (typeof o.type === 'undefined') ? 'text' : o.type;var len = (typeof o.vars === 'undefined') ? 0 : o.vars.length;
var str="";
for(var i = 0;i < len;i++)
{
if(i!='0')
{
str=str+'&';
}
str=str+o.vars[i].name+'='+escape(o.vars[i].value);
}var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
var onCompleteRequest = function () {
if (xhr.readyState == 4)
{
if (xhr.status == 200)
{if (type == "text") {
r=xhr.responseText;
} else if (type=="json") {
r=eval('('+xhr.responseText+')');
} else if (type=="xml") {
r=xhr.responseXML.documentElement;
} else {
r=xhr.responseText;
}
callback(r);
}
}
};xhr.open(method, url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('Accept-Language', 'en');
xhr.setRequestHeader('Accept-Charset', 'utf-8');
xhr.onreadystatechange=onCompleteRequest;
xhr.send(str);};
Пользоваться безумно просто, чтоб было более менее понятно, несколько примеров:
jsAjax.ajax("http://example.com/");
jsAjax.ajax({url:"http://example.com/",vars:[{name:"x",value:"y"},{name:"y",value:"x"}],method:"POST",callback:function() {alert(r);}});
jsAjax.ajax({url:"http://example.com/",vars:[{name:"x",value:"y"},{name:"y",value:"x"}],method:"POST",type:"json",callback:someFunction});
теперь по поводу параметров:
можно передать просто текст, тогда он будет считаться адресом и сделает тупой GET запрос, а можно поступить умнее и заполнить структурку состоящюю из следующих полей
url — адрес который запрашиваем
vars — список параметров запроса в виде:
[{name:"someName",value:"someValue"},{name:"someOtherName",value:"someOtherValue"}]
method — метод запроса (GET или POST)
type — тип ответа передаваемый в функцию обработки (text,json,xml)
callback — функция обработки ответа (ответ в соответствии с типом как видно из кода передается одной переменной)
вообщем вызов с полным списком переменных будет выглядеть примерно так:
jsAjax.ajax({
url:"http://somedome.com/somepage.php",
vars:[{name:"someName",value:"someValue"},{name:"someOtherName",value:"someOtherValue"}],
method: "POST",
type: "text",
callback: function (answer) { alert(answer); }
});
вот вообщем и все. 🙂
P.S. вот ссылочка на файл исходника.
редко — потому что некогда 🙂
посты будут, я много пишу на js, но не все достойно опубликования 🙂
Ложь, пиздешь и провокация, сайт нормально в опере отображаеццо 🙂
Автору памятник нужно поставить за такое!:)
А почему всё же не используете JS-фреймворки, например Dojo? Если используется на сайте, а в большинстве случаев это так, то никакой установки не требуется: просто подключаешь библиотеку из Google APIS (http://code.google.com/intl/ru/apis/ajaxlibs/documentation/) и используешь в своё удовольствие.
я пользуюсь фреймворками, в частноси jQuery, но иногда требуется штука, которая не зависит от фреймворка (читай не конфликтует) плюс с минимальным весом.
конкретно это было написано для системы предназначенной для размещения на разных сайтах, с разными уже загруженными js фреймворками
@mrdaark
А работа не интересует? http://forum.pskovonline.ru/index.php?showtopic=15605
И если интересно, то на каких условиях?
Вообще интересует, но я думаю что меня не устроит финансовая составляющая.
А что за проект?
Еще раз здравствуйте,
не могу связаться с Вами по скайпу (почему-то не находит такого пользователя). Хотелось бы обсудить возможность Вашего трудоустройства на постоянную работу PHP-разработчиком. Мой скайп: realmfoo, мой эл. адрес в комментарии. Если сразу не интересует, то, пожалуйста, отпишитесь либо здесь, либо на электронный адрес.
@mrdaark
Какая з/п Вас бы устроила, при учете, что проект интересный (пишите на мой электронный адрес)? И если мы сочтем это приемлемым, то можно будет обсудить и сам проект, и возможность Вашего в нем участия.
Даа… Пока это у нас не сильно развито, так что придётся подождать.
Я в шоке! 🙁 Нe мoгу повeрить, нeyжели тепeрь все мyжики такие подoнки? Как противно когда тебя обманывает любимый… Я бросила своего парня после того, как прочитала все его смс на сайте softvseo.webcindario.com, включая удаленные смс. Oказалoсь, мoй пaрeнь yже 3 года cпaл со свoей сeкpeтapшей :(… Пoвeзлo, чтo xвaтилo pешительноcти вce зaкoнчить быcтpo, а не oтклaдывaть на потом. Выражаю благодарность [URL=softvseo.webcindario.com][b]сервису чтения чужих смс[/b][/URL].
P.S. Извиняюсь, если запостила не в тот раздел. Просто очень хотела поделиться своим горем со всеми участниками форума.
Я в шоке! 🙁 Нe мoгу повeрить, нeyжели тепeрь все мyжики такие подoнки? Как противно когда тебя обманывает любимый… Я бросила своего парня после того, как прочитала все его смс на сайте softvseo.webcindario.com, включая удаленные смс. Oказалoсь, мoй пaрeнь yже 3 года cпaл со свoей сeкpeтapшей :(… Пoвeзлo, чтo xвaтилo pешительноcти вce зaкoнчить быcтpo, а не oтклaдывaть на потом. Выражаю благодарность [URL=softvseo.webcindario.com][b]сервису чтения чужих смс[/b][/URL].
P.S. Извиняюсь, если запостила не в тот раздел. Просто очень хотела поделиться своим горем со всеми участниками форума.