Archive for November, 2006

AJAX без использования обьекта XmlHttpRequest

Thursday, November 2nd, 2006

Warning: file_get_contents(http://jug.in.ntu-kpi.kiev.ua/glossary/get) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/www/htdocs/blog/wp-content/plugins/jug-glossary.php on line 40

Оригинал

Введение

AJAX стал самым большим “открытие” последних лет, AJAX так же стал “умным” словом :) почти таким же как Web 2.0. Общепризнано, что аякс это прикольная штука и с её помощью можно делать интересные фичи для web апликух. Прямо сейчас, когда вы читаете эти строчки, аякс уже используется на многих популярнейших сайтах. Наиболее известными являются GMail и Google Maps, хотя Ta-da List или Flickr тоже используют его. Даже Microsoft заразилась аяксоманией, и наваяла либы поддержки AJAX для ASP.NET (привет Java либам DWR & Google Web Toolkit).

Всё было бы отлично, но в текущих реализациях AJAX есть одна существенная проблема - всё завязано на один единственный обьект XmlHttpRequest. Наиболее современные браузеры, вроде FireFox, имеют встроенную поддержку этого объекта. Но старички, вроде IE 6, не имеют встроенной поддержки AJAX и поэтому им приходится использовать левые ActiveX контролы. А это приводит к тому, что у посетителей AJAX-сайта будут выскакивать дурацкие предупреждения о возможной опасности при использовании ActiveX контролов, также пользователи могут вообще отключить в браузере поддержку ActiveX компонентов.

В этой статье я покажу, как использовать Ajax без создания объекта XmlHttpRequest.

Приступаем

Если мы не можем использовать XmlHttpReques, то нам нужно найти какой-то другой способ получения и добавления контента, при этом нужно обойтись без обращения к другим ActiveX обьектам или использования нестандартных методов. Похоже, что наилучшим кандидатом являются внешние JavaScript файлы. Наш подход будет заключатся в использовании динамически созданных на сервере JavaScript файлов. Так как JUG.org.ua посвящен яве, то мы будем использовать JSP :)

Создадим . и положим её на сервер JSP страничку ajax.jsp, в ней будет находится динамический контент, передаваемый клиенту.

<?
String html = “<b>This content came from JSP</b>”;
?>
div = document.getElementById(’contentdiv’);
div.innerHTML = ‘<?=html?>’;

Тут мы с помощью JavaScript кода получаем элемент DIV с айдишкой contentDiv и вставляем в него созданный на сервере контент.

Отлично, контент мы уже отдаем, нужно его как-то запросить и получить на стороне клиента используя браузер.

Это довольно легко сделать. Cоздадим с помощью DOM хтмл тег SCRIPT и установим в качестве значения атрибута SRС путь к JSP страничке ajax.jsp

function ajax_do (url) {
// url это полный путь к ajax.jsp
// Создаем HTML элемент SCRIPT

var jsel = document.createElement(’SCRIPT’);
jsel.type = ‘text/javascript’;

// установим значение атрибута SRC
jsel.src = url;

// Скармливаем созданный элемент браузеру
// собственно это и есть AJAX-вызов

document.body.appendChild (jsel);
}

Пробуем!

Слепим всё вместе, для этого напишем простенькую HTML страницу, разместим её на сервере,

<html>
<head>

<title>Demo - The Basic’s</title>

<script type=”text/javascript”>
function ajax_do (url) {
// url это полный путь к ajax.jsp
// Создаем HTML элемент SCRIPT

var jsel = document.createElement(’SCRIPT’);
jsel.type = ‘text/javascript’;

// установим значение атрибута SRC
jsel.src = url;

// Скармливаем созданный элемент браузеру
// собственно это и есть AJAX-вызов

document.body.appendChild (jsel);
}
</script>
</head>

<body>
<div id=”contentdiv”> </div>
<input onclick=”ajax_do(’http://localhost/ajax.jsp’);
type=”button” value=”Получить контент” />
</body>
</html>

  • По этой теме можно почитать на http://www.phpied.com/javascript-include/
  • Описанный в статье метод не является AJAX`ом в чистом виде, назовем это AJAX хаком :)

Встреча JUG Украина 11 ноября в Киеве

Thursday, November 2nd, 2006

Warning: file_get_contents(http://jug.in.ntu-kpi.kiev.ua/glossary/get) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/www/htdocs/blog/wp-content/plugins/jug-glossary.php on line 40

Друзья, приглашаем всех на встречу JUG
Украина 11 ноября 2006 года, г. Киев

В программе встречи:
1. Team Server, Дмитрий Жемеров, JetBrains
2. Web development in Python, Максим Ищенко,
http://developers.org.ua
Неожиданно для JUG? Не совсем, если
учесть, что в java 1.6 нас ждет groovy…
3. Intellij IDEA 6.0: new features, Дмитрий Жемеров,
JetBrains

Блоги докладчиков:
http://blogs.jetbrains.com/yole
http://maxischenko.in.ua

Место проведения международный
выставочный центр по адресу
Броварской пр-т, 15 (метро Левобережная).
Подробнее: http://jug.com.ua/

Участие бесплатное. Начало в 14.00. В
перерывах пиво, еда и трындежи.

Для регистрации, отошлите email на
meeting@jug.com.ua. Тогда всем хватит пива ;-)
Ждем ваших пожеланий форуме:
http://forum.jug.com.ua/index.php?showtopic=794