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



 

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

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

Открыть тему
Тема закрыта
> Ajax для начинающих, Статья про использование Ajax-технологии
Vialls_mw
Vialls_mw
Topic Starter сообщение 20.6.2008, 22:06; Ответить: Vialls_mw
Сообщение #1


"Введение в 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)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Zinder
Zinder
сообщение 27.8.2009, 17:46; Ответить: Zinder
Сообщение #2


Спасибо, очень интересно!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ltb
ltb
сообщение 17.10.2009, 15:26; Ответить: ltb
Сообщение #3


Все это конечно же хорошо, но лучше юзать фрэймворки типа jQuery, Prototype


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ilyazh
ilyazh
сообщение 18.10.2009, 10:45; Ответить: ilyazh
Сообщение #4


Полностью согласен. jQuery гораздо удобнее и проще в изучении. Использую его и доволен, чего и другим советую (использовать фреймворки).
Как говориться, нафига изобретать велосипед? )
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.10.2009, 15:56; Ответить: ZiTosS
Сообщение #5


ilyazh, уважаемый... сразу переходить к фреймёкам конечно можно. Но многие не знаю даже синтаксиса JS и как осуществляется передача. А это бы стоило почитать... Потом на многих форумах только и видишь темы:
"Помогите, не могу в jQuery выполнить запрос к серверу"
"Или руки кривые, или jQuery примеры не рабочие"
и т.д.

А ведь зачастую людям просто лень что-то самим изучить или сделать. Либо они утверждают себе, что они ГУРУ и им не надо изучать азы, что приводит к плачевным результатам.
И если хотите знать, все библиотеки используют именно данный объект и похожие методы запроса, только чтобы скрыть их они используют функции-обработчики, замыкания, объекты. Вся внутренняя обработка при обращении с Ajax в библиотеках построена по такому же принципу. Поэтому грех не знать, как же это устроено.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ilyazh
ilyazh
сообщение 18.10.2009, 18:47; Ответить: ilyazh
Сообщение #6


Ну то что юзеры не хотят разбираться, то фреймворк тут не причём. Их лень - их проблема.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4033 Сегодня, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 653 Вчера, 11:50
автор: Rebex
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2797 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
54 arendator 34816 15.4.2024, 15:16
автор: arendator
Горячая тема (нет новых ответов) ⭕Антидетект браузер AdsPower для эффективной работы с мультиаккаунтами!
83 AdsPower 24399 14.4.2024, 22:52
автор: AdsPower


 



RSS Текстовая версия Сейчас: 18.4.2024, 14:58
Дизайн