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)