[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ajax на чистом JS
Эли4ка
Здравствуйте,форумчане!Сегодня понадобилось собственное реализация ajax на чисом js(без использования библиотек и фреймворков) поиск в Google результатов не дал,а на этом форуме нужную реализацию от kirik'а,но дело в том,что он написал в виде класса,а мне нужно в виде обычных функций,пробовала переделать,но что-то так и не вышло :( :( :( Может есть у кого-нибудь нужная реализация?Ну или вот мой переделанный код,может кто-нибудь увидит,где ошибки из-за чего он не работает.
Спасибо.
<html lang="en">
<head>
<title>
<!-- Insert your title here --></title>
</head>
<script>
var
ajax = {
HttpRequest,
_OnLoad: function () { },
_OnComplete: function () { },
_OnError: function () {
/* alert('AJAX query error.'); */
},
ge:function (id) {
return document.getElementById(id);
},
gecl:function(cl){
return document.getElementsByClassName(cl);
},
my:function (result) {
ajax.ge('result').innerHTML = result;
},
Execute:function (responseText) {
var obj = document.createElement('div');
obj.innerHTML = responseText;
var elts = obj.getElementsByTagName('script');

for(var i = 0; i < elts.length; i++) {
eval(elts[i].text);
elts[i].parentNode.removeChild(elts[i]);
}

}
,
OnLoad: function (fn) {
ajax._OnLoad = fn;

},
OnComplete: function (fn) {
ajax._OnComplete = fn;

},
OnError: function (fn) {
ajax._OnComplete = fn;
},
Post: function (params) {
if(ajax.RequestPrepare()) {
params = ajax.StrPrepare(params);
ajax.HttpRequest.open('POST', url, true);
ajax.HttpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');
ajax.HttpRequest.setRequestHeader('Content-length', params.length);
ajax.HttpRequest.setRequestHeader('Connection', 'close');
ajax.HttpRequest.send(params);
}return alert('ok');
},
RequestPrepare: function () {
if (window.XMLHttpRequest) { /* Mozilla, Safari,... */
ajax.HttpRequest = new XMLHttpRequest();
if (ajax.HttpRequest.overrideMimeType) {
ajax.HttpRequest.overrideMimeType('text/html');
}
}
else if (window.ActiveXObject) { /* IE */
try {
ajax.HttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
ajax.HttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {
/* do nothing */
}
}
}


if (typeof ajax.HttpRequest == 'undefined') {
alert('Cannot create XMLHTTP instance.');
return false;
}

ajax.HttpRequest.onreadystatechange = function(e) {
if (ajax.HttpRequest.readyState == 1) {
ajax._OnLoad();
}

if (ajax.HttpRequest.readyState == 4) {
if(ajax.HttpRequest.status == 200) {
if(execute === true) {
ajax.Execute(ajax.HttpRequest.responseText);
}
ajax._OnComplete(ajax.HttpRequest.responseText);
} else {
ajax._OnError(ajax.HttpRequest.status);
}
}
}

return true;
},
StrPrepare: function (obj) {
if(obj instanceof Object) {
var i = 0;
var arr = [];
for (var key in obj) {
arr[i++] = encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]);
}
return arr.join('&');
} else {
return '';
}
}
}

</script>
<script>

</script>
<body><form>
<input
type="submit" onclick="ajax.Post('ghgh')" value="Отправить" />
<input
type="text" name="name" value=""/>
</form>
<div
id="result"></div>
</body>
</html>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.