Как стать автором
Обновить
0

Ajax *

Asynchronous Javascript and XML

Сначала показывать
Порог рейтинга
Уровень сложности

Сжатие данных при передаче от браузера к серверу

Время на прочтение6 мин
Количество просмотров39K
Обрабатываете много данных в браузере?
Хотите отправлять их обратно на сервер?
Да так, чтобы отправлялось побыстрее и помещалось в один http запрос?

В статье я покажу как мы решили эту задачу в новом проекте, используя сжатие и современные возможности javascript.

Читать дальше →
Всего голосов 68: ↑64 и ↓4+60
Комментарии37

Новый взгляд на старый MS Ajax

Время на прочтение3 мин
Количество просмотров5.4K
Чуть больше года назад мне на глаза попался один сайт. На первый взгляд он не чем не отличался от сотни подобных сайтов, но мой коллега заметил множественное обновление мелких модулей при клике на функциональных элементах. Дальнейшим открытием было то, что он работает без перегрузок. На сегодняшний день у каждого из нас это не вызовет большого впечатления, но данный сайт работает уже больше 5 лет.
После двухдневного анализа сайта мы нашли ответ на вопрос — «Как он работает? ». Центром данного сайта был файл с названием msajax.js, что побудило нас к поискам в интернете. Информации оказалось мало, но достаточно для начала экспериментов.
Читать дальше →
Всего голосов 27: ↑12 и ↓15-3
Комментарии1

Stand-alone приложение RAP

Время на прочтение7 мин
Количество просмотров4.3K
Приветствую всех! Это моя первая статья, потому просьба отнестить с пониманием.

С тех пор как я впервые увидел RAP и OSGi — прошел год, но с первого взгляда я просто влюбился в эти технологии. К сожалению даже в сети очень мало документации по RAP, позволяющей написать что-то крутое (кроме hello world) с нуля. Для начала, конечно, нужно знать что такое OSGi. По этой теме инфы в сети достаточно — можно загуглить. Так как статья о RAP, подразумевается, что читатель уже знает как создавать OSGi бандлы, как их устанавливать и запускать.

То есть задача ставится так: «сделать кастомный интерфейс сайта заюзав RAP». Как создать в Eclipse проект OSGi бандла, читатель, я предполагаю, знает.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии8

Модальное окно bootstrap для редактирования форм

Время на прочтение3 мин
Количество просмотров37K
Возникла необходимость использовать плагин bootstrap-modal.js для редактирования формы. Казалось бы тривиальная задача, но пришлось столкнуться с некоторыми сложностями. В данной статье поделюсь с вами своим решением, более изящные решения и здоровая критика приветствуются.

Имеется страница с формой для редактирования товара. Добавим на форму выпадающий список с перечнем производителей. Рядом разместим бутстраповскую иконку icon-plus-sing, которая и будет триггером для вызова модального окна.

image
Читать дальше →
Всего голосов 11: ↑6 и ↓5+1
Комментарии4

Истории

Зачем Google добавляет while(1); к своим JSON-ответам?

Время на прочтение2 мин
Количество просмотров68K
Это позволяет избежать CSRF/XSRF-атак (подделки межсайтовых запросов).

Рассмотрим следующий пример: допустим у Google есть URL вида gmail.com/json?action=inbox, который возвращает 50 первых сообщений вашего почтового ящика в формате JSON. Злоумышленник, чей сайт находятся на другом домене, не может выполнить AJAX запрос, обратившись по данному URL, чтобы получить данные, ввиду same origin policy (правило ограничения домена). Но ничто не мешает злоумышленнику включить вышеуказанный URL на свою страницу с помощью тега .
Читать дальше →
Всего голосов 187: ↑175 и ↓12+163
Комментарии145

AJAX в CakePHP на jQuery и Prototype

Время на прочтение5 мин
Количество просмотров5.3K
Небольшой пример реализации AJAX в CakePHP, пример показывает, как легко работать с AJAX в СakePHP, всю работу берет на себя фреймворк. Реализуем пример на библиотеке jquery.js затем переделаем наш пример на библиотеку prototype.js
Читать дальше →
Всего голосов 6: ↑4 и ↓2+2
Комментарии2

Кроссдоменный обмен: анонимайзер + фрейм

Время на прочтение3 мин
Количество просмотров7.8K
Поскольку для проектов на коленках или оказания безвозмездной помощи душит жаба по написанию и использованию собственного прокси (требует денег и времени), — есть идея замены прокси существующими анонимайзерами.
=======================================================================================
Идея позволяет: читать-писать контент и message на выбранном сайте,
производить авторизацию, ставить и исполнять скрипты.

=======================================================================================
Подробности
Всего голосов 13: ↑9 и ↓4+5
Комментарии10

Псевдо веб сокеты

Время на прочтение8 мин
Количество просмотров12K
     Вдохновившись вот этой статьёй о Socket-соединениях в Веб-приложениях, решил сделать более-менее универсальный модуль с удобным интерфейсом, реализующий эту технологию.
     В этой статье под словом «сокет» имеется ввиду програмный интерфейс, который обеспечивает обмен данными между серверным и клиентским скриптами, с возможностью клиентского постоянно «слушать порт». Другими словами, как только что-то произошло на сервере, он может тут же сообщить об этом клиенту, и наоборот. Конечно же, в javascript нет возможности «слушать порты» и создавать полноценные сокеты, но зато у нас есть спички, изолента и пластилин, из которых можно смастерить какое-то подобие.
     Сначала я опишу примерный принцип действия этой системы, а затем, по традиции, приведу код примитивного чата построенного на её основе, с, конечно же, ссылкой. Хотелось бы увидеть своими глазами хабраэффект в действии. Ещё в конце будет ссылка на репозиторий с исходниками.

читать дальше
Всего голосов 29: ↑26 и ↓3+23
Комментарии19

Живой пример, Google теперь сканирует Ajax

Время на прочтение1 мин
Количество просмотров17K

Задумал переделать на сайте навигационное меню изобилующее ссылками в разные разделы и сделать менее «спамное» для поисковых систем и более удобное для посетителей. Идея была проста.

  • с главной страницы все ссылки на разделы сайта на HTML
  • ссылки в меню из разделов только на тематические разделы
  • остальные ссылки на нетематические разделы сделать на JavaScript в отдельном файле

Читать дальше →
Всего голосов 18: ↑12 и ↓6+6
Комментарии33

Визуализируем геоинформацию из логов на web-карте в реальном времени

Время на прочтение9 мин
Количество просмотров17K


Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии24

Реализация пошаговой работы PHP-скрипта с помощью AJAX

Время на прочтение5 мин
Количество просмотров47K
Искал более-менее простое и универсальное средство для организации пошаговой работы скрипта, но так ничего и не нашел. Даже вопрос в QA задал, везде только общие фразы. Поэтому решил сам сделать такой инструмент.

Для чего это вообще нужно?


Бывает необходимо обработать скриптом какой-то очень уж большой файл, например, для импорта. Естественно, время работы скрипта увеличивается пропорционально размеру файла или количеству строк в нем.

Хотелось бы разбить обработку файла на несколько частей и запускать скрипт в работу уже по частям.
image
Принцип реализации давно известен — обмен данными между сервером и клиентом:
Клиент запускает скрипт, тот выполняет несколько итераций и возвращает клиенту номер строки, на которой он остановился. После этого клиент делает новый запрос, в котором передает скрипту этот номер и скрипт продолжает работу дальше.
Читать дальше →
Всего голосов 22: ↑12 и ↓10+2
Комментарии11

Обзор JS-фреймворков. Путешествие через джунгли JavaScript MVC. Ч. 2

Время на прочтение15 мин
Количество просмотров124K
(Окончание перевода статьи Эдди Османи о сравнении и выборе библиотеки для проекта со значительной ролью JS на клиенте.)
Содержание первой части:

■ Что такое MVC или, лучше сказать, MV*?
■ Когда нам нужен MV*-фреймворк JS?
■ Где же мы будем нуждаться в MV*, а где нет?
■ Проблема выбора: слишком много вариантов?
■ TodoMVC: общее приложение для обучения и сравнения
■ Предложенные нами критерии выбора фреймворка
■ Dojo и усложнение фреймворков на JavaScript
■ Коллекция TodoMVC (фреймворки, на которых сделаны реализации тестового приложения Todo)
Читать дальше →
Всего голосов 87: ↑78 и ↓9+69
Комментарии18

Обзор JS-фреймворков. Путешествие через джунгли JavaScript MVC. Ч. 1

Время на прочтение11 мин
Количество просмотров113K
(от 27 июля 2012)
При написании нативного веб-приложения легко начать чувствовать себя богом, способным работать просто с библиотекой работы с DOM (такой как jQuery) и горсткой сервисных плагинов. Вскоре возникает проблема в виде груды вложенных возвратных функций jQuery и разбросанных DOM-элементов без всякой структуры вместо приложения.

Короче, мы застреваем в спагетти-коде. К счастью, есть современные JS-фреймворки (библиотеки, задающие, кроме функций, правила организации кода --прим. перев.), помогающие поддерживать структуру и организованность в проекте, облегчающие ремонтопригодность в будущем.

■ Что такое MVC или, лучше сказать, MV*?


Эти современные библиотеки дают разработчикам простой путь к организации кода, используя вариации паттерна проектирования, известного как MVC (Model-View-Controller). MVC разделяет задачи в приложении на 3 части:
Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии23

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Подмена XMLHttpRequest или как не трогая тонны готового js-кода изменить поведение всех ajax-запросов

Время на прочтение7 мин
Количество просмотров21K
Здравствуйте, в этой маленькой заметке расскажу немного про ООП в JS, объект XMLHttpRequest, паттерн прокси, и дружелюбие джаваскрипта в этом плане.

Была у меня сегодня такая задача — есть проект, который довольно активно использует ajax-запросы, но вот проблема — бекенд у нас так устроен, что разаутентифицирует пользователя, если тот не активен в течение, скажем, получаса. В итоге случалось такое, что пользователь, пытаясь совершить какое-то действие, которое использует аякс, не мог его совершить (уж извините за тавтологию), нужно было решить эту проблему.
Читать дальше →
Всего голосов 50: ↑43 и ↓7+36
Комментарии39

Индикаторы ключевой информации на сайтах для Firefox на скорую руку

Время на прочтение21 мин
Количество просмотров1.8K
У многих из нас есть на примете набор сайтов, которые мы периодически открываем не для внимательного чтения, а чтобы бегло ознакомиться с каким-то небольшим участком информации, посмотреть, нет ли новых статей или комментариев, проверить, не сменился ли какой-нибудь параметр и так далее. Сайты часто предоставляют для таких нужд rss или почтовую рассылку, но так бывает далеко не всегда. Попробую описать один из способов автоматизации подобной рутины.

Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии5

История одного расследования о странном поведении XMLHttpRequest в новых версиях Firefox

Время на прочтение8 мин
Количество просмотров5.3K

I. Суть проблемы.


В список основных предназначений XMLHttpRequest, конечно, не входит запрос HTML, чаще этот инструмент взаимодействует с XML, JSON или простым текстом.

Однако связка XMLHttpRequest + HTML хорошо работает при создании расширений к браузеру, которые в фоновом режиме опрашивают на предмет новостей сайты, не предоставляющие для этого почтовую подписку, RSS или другие экономные API или предоставляющие эти сервисы с какими-то ограничениями.

При создании нескольких расширений для Firefox я сталкивался с такой необходимостью. Работать с полученным от XMLHttpRequest кодом HTML при помощи регулярных выражений — способ очень ненадёжный и громоздкий. Получить DOM от XMLHttpRequest можно было лишь для правильного XML. Поэтому приходилось следовать хитрым советам на сайте разработчиков. Однако начиная с Firefox 11 появилась возможность непосредственного получения DOM от XMLHttpRequest, а в Firefox 12 была добавлена обработка таймаутов.

Я испытал новую возможность на создании мини-индикаторов новых топиков для двух небольших форумов, и это оказалось очень удобным (50 строчек кода плюс расширение CustomButtons — вот и готовый индикатор за пять минут, с опросами по таймеру и четырьмя состояниями: нет новостей, есть новости, ошибка и таймаут; подробнее можно почитать здесь). Всё работало как часы.

Поэтому я попытался убрать из кода своих расширений все прежние костыли и ввести туда новый удобный парсинг. Однако при работе с сайтом rutracker.org возникла странная проблема (тестирование проходит на последней ночной сборке под Windows XP; очень прошу прощения за все косяки в коде и формулировках: у меня нет программистского образования и опыт мой в этой сфере, к сожалению, очень невелик.).

Читать дальше →
Всего голосов 78: ↑76 и ↓2+74
Комментарии38

Защита ajax-приложения от Cross Site Request атак (CSRF)

Время на прочтение2 мин
Количество просмотров35K
Совсем недавно у меня появилась задача защитить web-приложение полностью построенное на ajax от CSRF-атак.

Каков же механизм такой атаки? Суть заключается в выполнении запроса с другого сайта под авторизационными данными пользователя. Например, у нас есть действие удаления своего аккаунта example.com/login/dropme. Если защиты от CSRF атаки нет, мы можем на нужном нам сайте разместить тег:
<img src="http://example.com/login/dropme">

Сразу после того как пользователь зайдет на приготовленную нами страницу и подгрузит содержимое img, его аккаунт на example.com будет удален. О защите от этого я расскажу под катом.

Читать дальше →
Всего голосов 38: ↑22 и ↓16+6
Комментарии31

Кармавьюер как слабо связанный модуль к HabrAjax

Время на прочтение1 мин
Количество просмотров608
Модуль — это независимый плагин, который может работать без основного скрипта. История данного Кармавьюера начинается с 23 марта 2010 — автор Atilla написал скрипт показа кармы по наведению мыши на имя пользователя. К этому времени существовали другие 2-3 реализации показа кармы и одна — даже с изменением без захода на страницу. Скачать кармавьюер.
HabrAjax
Детали и особенности, кратко
Всего голосов 16: ↑5 и ↓11-6
Комментарии0

Вкладка «Всё» от 23 апреля — просмотр вопросов и ответов без перезагрузки страниц

Время на прочтение1 мин
Количество просмотров732
Обновление. Как известно, раньше потоки статей и вопросов-ответов существовали раздельно, а теперь авторизованные пользователи могут использовать вкладку «Всё» для просмотра смеси заголовков тех и других потоков. С юзерскриптом HabrAjax новой версии 0.85, от 25 апреля возможно смотреть не только заголовки, но и содержание без перезагрузки страниц. Достаточно кликнуть по заголовку или по кнопке ответов. Просмотрев статью, вопрос или комментарии к ним, по широкой кнопке «Свернуть» сворачиваем просмотренное.

Необходимые переделки затронули и ZenComment — юзерстили для Хабра.
Читать дальше →
Всего голосов 16: ↑9 и ↓7+2
Комментарии7

Вклад авторов