МенDashed CMS RSS
Курагирование от бороды
 
 
 /Root/Мақалар/

Ajax который я использую

21.10.2011 19:05:39

Про ajax в интернете можно найти много, поэтому описывать не буду. Как то давно мне попался удачный вариант кроссбраузерного ajax и после его небольшой модификации я стал им пользоваться. Тогда в его функцию я добавил id элемента и через .innerHTML в элемент подставлялось значение полученное через ajax запрос, очень просто и удобно когда нет необходимости отслеживать событие, такое можно сделать например на поиск или на чат, проверку значения в базе, правда такой подход не работает с контролами, да и отследить событие не возможно.

Начав разрабатывать свою CMS перед мной встала задача отслеживать когда выполнился запрос и возвращать его в контрол и мне пришлось думать, к счастью не долго. И я обнаружил одну интересную особенность языка JavaScript, в качестве параметра в функции можно передавать другую функцию и как оказалось ее можно выполнить внутри первой, я был просто в шоке от изощренности JavaScript, шок продлился не долго, функция в качестве параметра прошла на вылет и запустилась там где срабатывало событие ajax и более того получилось вернуть строку полученною ajax. Оформил функцио как необязательный параметр, так что ее использование не обязательно.

Вызов аякса пример:

makeRequests('http://','post','a=gsdg&b=sdgsf','id_div_result');
makeRequests('http://','get','a=gsdg&b=sdgsf','id_div_result');
makeRequests('index.php','post','ajax=modulesopen&filename=' + '1111' ,false, function(s){alert(s)});
makeRequests('index.php','post','ajax=modulesopen&filename=' + '1111' ,'id')

шаблоны:

makeRequests('index.php','post','ajax=' ,false, function(s){});

makeRequests('index.php','post','ajax=','');

Сам ajax
//
//js
function makeRequests(url,method,poststr,element, func) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');

}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
//alert(' XMLHTTP not created! ');
return false;
}
http_request.onreadystatechange = function() { alertContents(http_request,element, func); };
if (method=='get'){
http_request.open('GET', url, true);
http_request.send(null);
}

if (method=='post'){
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
http_request.setRequestHeader("Content-length", poststr.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(poststr); 
}



}
function alertContents(http_request,element, func) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
if (element){ document.getElementById(element).innerHTML = http_request.responseText;}
if (func){func(http_request.responseText);}

} else {
if (func){func(false);}
if (element){document.getElementById(element).innerHTML = 'Server Disconnect!';}
}
}
}
//js
Скачать файл

Рейтинг $r-- [1] $r++

Показать коментарии (vkontakte.ru)
}