Помощник
Дата поста: | В теме: | За сообщение: | Поблагодарили: | ||
---|---|---|---|---|---|
20.6.2008, 22:06 |
Ajax для начинающих Статья про использование Ajax-технологии |
"Введение в Ajax" Для тех, кто не знает, что такое Ajax - читать тут. В этой статье я расскажу, как создавать объект XMLHttp и посылать HTTP запросы серверу с помощью этого объекта. И так, надеюсь как вы поняли, в Ajax HTTP запросы отправляются с помощью объекта XMLHttp. Проблема создания этого объекта состоит в том, что в браузерах InternetExploder это Activex объект MSXML, в остальных популярных браузерах это объект XMLHttpRequest, воспроизводящий функциональность объекта MSXML от микрософт. Сейчас мы напишем кроссбраузерную фукнцию для создания этого объекта: function createXmlHttp() { if (typeof XMLHttpRequest != "undefinder") { return new XMLHttpRequest(); } else if (window.ActiveXObject) { var Versions = ["MSXML2,XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"]; for (var i = 0; i < Versions.length; i++) { try { var XmlHttp = new ActiveXObject(Version[i]); return XmlHttp; } catch (oError) { //////// } } } throw new Error("Не возможно создать XMLHttp"); } Эта функция узнает, какой класс нужно ей создать, создает и возвращает его. Теперь создать объект XMLHttp, очень просто: var XMLHttp = createXmlHttp(); Сейчас я покажу пример, отправки GET запроса серверу: XMLHttp.open("get", "anekdot.php?id=" + id, true); XMLHttp.onreadystatechange = function() { if (XMLHttp.readyState == 4) { if (XMLHttp.status == 200) { alert("Анекдот: " + XMLHttp.responseText); } else { alert("Ошибка!"); } } } XMLHttp.send(null); В этом коде вызывается метод open(), который выполняет асинхронный запрос типа GET на страницу anekdot.php. Далее обработчику событий onreadystatechange, назначается функция, которая будет выполняться, после получения ответа от сервера. В этой функции мы проверяем значение свойства readyState и если оно равно четырем, проверяем код статуса, если он равен 200, то ошибок не возникло. Текст, возвращаемый сервером, храниться в переменной responseText класса XMLHttp. Код файла, anekdot.php думаю приводить не стоит, и так все понятно, скрипт выбирает из базы анекдот с ID равным нашему GET запросу и выводит его. Попозже напишу статью про посылку POST запроса. |
|||
28.4.2008, 13:14 |
Лучший способ универсальной структуры сайта? |
Ну если сайт построен на множестве страниц, то это один из самых удобных вариантов. А вообще покажу, как я делаю. К примеру есть шаблон: <html> <head> <title> <%TITLE%> </title> </head> <body> <b><%SITE_NAME%></b><br /> <%CONTENT%> </body> </html> У нас есть скрипт, грубо говоря который заменяет, элементы <%***%>, на какие либо значения. К примеру: [php]<?php $shablon = file_get_contents('файл_шаблона'); $shablon = str_replace("<%TITLE%>", "Мой сайт" $shablon); $shablon = str_replace("<%SITE_NAME%>", "Мой сайт" $shablon); $shablon = str_replace("<%CONTENT%>", "Какая нибудь статья" $shablon); ?>[/php] Но это самый простой и грубый вариант. (для твоей проблемы походит в самый раз) Вот рассмотри более сложную функцию все поймешь: [php]function parseSkelet($file, $macros) { $info = file_get_contents($file); foreach($macros as $key=>$value) { $info = str_replace("<%$key%>", $value, $info); } $info = ereg_replace("<%[a-zA-Z0-9_-]*%>", "", $info); return $info; }[/php] |
|||
Текстовая версия | Сейчас: 25.4.2024, 8:40 |