X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

История благодарностей участнику Vialls_mw. Поблагодарили: 0 раз(а)
Дата поста: В теме: За сообщение: Поблагодарили:
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 запроса.


Спасибо сказали: (1)
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]


Спасибо сказали: (1)

2 страниц V  < 1 2
RSS Текстовая версия Сейчас: 25.4.2024, 8:40
Дизайн