Форум о социальных сетях Поиск по форуму Инвестиции SMM обучение SMM курсы
Форум о социальных сетях Поиск по форуму Инвестиции SMM обучение SMM курсы
  • Страница 1 из 2
  • 1
  • 2
  • »
AJAX своими руками (краткий обзор)
#1
Воскресенье, 11.04.2010, 09:53
$USERNAME$
Проверенный
Сообщения: 6860
Репутация: 9662

AJAX — это технология для обмена данными в фоновом режиме. Активно используется в WEB: при создании приложений, чатов, модальных окон и прочего. О нём и пойдёт речь.

Начать обмен данными нужно с создания объекта XMLHTTPRequest, который умеет принимать и посылать данные. Кроссбраузерно это можно сделать так:

Code
function getXmlHttp(){var a;try{a=new ActiveXObject("Msxml2.XMLHTTP")}catch(c){try{a=new ActiveXObject("Microsoft.XMLHTTP")}catch(b){a=false}}if(!a&&typeof XMLHttpRequest!="undefined"){a=new XMLHttpRequest()}return a};

Теперь функция getXmlHttp будет возвращать нужный нам XMLHTTPRequest.

Code
var request = getXmlHttp();

GET-запросы (получение данных)

Откроем соединение при помощи метода open. Первым аргументом он принимает тип запроса (POST или GET), вторым — URL запроса, третьим — асинхронность запроса* (true/false)

Code
request.open('GET', '/index.php', true);

* Асинхронный запрос — запрос, в котором браузер просто отсылает/запрашивает данные и не ждёт ответа. В синхронном же всё наоборот. Это ведёт к потере производительности скрипта. Так что используйте только асинхронные запросы.

Далее на объект XMLHTTPRequest нужно повешать обработчик события readystatechange, который указывает на то, что readyState (состояние запроса) изменился.

Code
request.onreadystatechange = function () {/*Ваша ф-ция*/}

Внутри ф-ции необходимо сделать проверку статуса запроса (request.status). Он должен быть равен 200.

Далее — отправляем запрос методом send:

Code
request.send(null);

Ответ запроса будет храниться в свойстве request.responseText.


Для тех, кто в танке, полный пример:

Code
var request = getXmlHttp(); // новый XMLHTTPRequest
request.open('GET', '/forum', true); // открываем асинхронное GET-соединение со страницей /forum
request.onreadystatechange = function () { // если пришёл ответ
if (request.status == 200) alert(request.responseText); // и если статус равен 200, выводим в алерте текст ответа
}
request.send(null); // отправляем запрос



POST-запросы (отправка данных)

Тут всё проще, чем казалось. Можно также получать ответ сервера в responseText, но в send нужно поместить отправляемые данные. В виде строки, прописывая сначала параметр, а потом его значение.
Пример:

Есть форма:

Code
<form>
<input name="s" />
<input name="t" />
</form>

Отправить её можно так:

Code
request.send('s=значение1&t=значение2');

И конечно же, пример:

Code
var request = getXmlHttp(); // новый XMLHTTPRequest
request.open('POST', '/index', true); // открываем асинхронное POST-соединение со страницей /index
request.send('s=Admin&subject=test&message=test&a=18'); // отправляем данные. На этом примере — отправка ЛС


Как получить некоторый текст со страницы:

Создаём новый DOM-элемент, вставляем в него ответ запроса:

Code
var el = document.createElement('DIV'), el.innerHTML = request.responseText;

Теперь el — полноценный DOM объект, хранящий ответ запроса.

Например, теперь текст первой ссылки можно получить так:

Code
el.getElementsByTagName('a')[0].innerText;


Как видите, всё очень просто и легко осваиваемо, при наличии желания.


С вами был $USERNAME$, до новых встреч. ;)

Пост отредактировал $USERNAME$ - Воскресенье, 11.04.2010, 09:58
#2
Воскресенье, 11.04.2010, 10:23
Дёня
Проверенный
Сообщения: 930
Репутация:
$USERNAME$, спасибо ;)
Эх прощай МС...
#3
Воскресенье, 11.04.2010, 12:52
cM0kep
Заблокированные
Сообщения: 240
Репутация: 457
Довольно нормальнО) y
Нужен красивый и дешёвый 6* номерок? Тогда тебе сюда! : Кликай!
#4
Воскресенье, 11.04.2010, 12:55
Slonuk
Заблокированные
Сообщения: 922
Репутация: 3813
$USERNAME$, супер y спасиб ;)
#5
Суббота, 17.04.2010, 19:02
$IP$
Заблокированные
Сообщения: 496
Репутация: 302
Спасибо, но я лично ничего не понял((
Ахаха ну и хуй с вами! Как у меня было на МС куча акков так и будит.
mYm
#6
Воскресенье, 18.04.2010, 09:53
mYm
Заблокированные
Сообщения: 1526
Репутация:
Quote (JIyHTuK)
Спасибо, но я лично ничего не понял((

Тут расписано все.Как можно не понять?
#7
Воскресенье, 18.04.2010, 11:20
MrSevan
Пользователь
Сообщения: 127
Репутация: 131
спс=)
<демЫЧ> Не взяли меня на работу..
<Сирожа> Это еще почему?
<демЫЧ> Сказали, что им нужен тот человек, что в резюме описан, а не я...
#8
Воскресенье, 18.04.2010, 12:04
DjSwat
Проверенный
Сообщения: 423
Репутация:
n
Халява -> http://bit.ly/JI0pjb
#9
Воскресенье, 18.04.2010, 12:14
$USERNAME$
Проверенный
Сообщения: 6860
Репутация: 9662
DjSwat, обоснуй Bukas
mYm
Воскресенье, 18.04.2010, 14:50
mYm
Заблокированные
Сообщения: 1526
Репутация:
Quote ($USERNAME$)
DjSwat, обоснуй

Тупой флуд .. даже обоснововать не надо :)
Воскресенье, 18.04.2010, 19:09
_Perfect
Проверенный
Сообщения: 212
Репутация: 166
спс!! y
Я знаю про тебя все :
1.Ты читаешь что тут написано
2.Ты держишь руку на мышке
3.Ты проверяешь
5.Ты улыбнулся
6.Ты не заметил что нету пункта 4
7.Ты проверяешь.
8.Ты опять улыбнулся
Воскресенье, 18.04.2010, 19:41
BenQStyle
Проверенный
Сообщения: 740
Репутация: 2279
Обожаю AJAX. Делаю сайт и там много ajax окон :)

Добавлено (18.04.2010, 19:41)
---------------------------------------------
$USERNAME$, а можно придумать свой стиль ajax окон?

Воскресенье, 18.04.2010, 21:35
N1LEX
Заблокированные
Сообщения: 3336
Репутация: 10084
$USERNAME$, Спасибо за информацию, многому научился.
Воскресенье, 18.04.2010, 21:51
Wulkan
Проверенный
Сообщения: 461
Репутация: 1305
Quote
(краткий обзор)

А полный где? chuckle Интересная статья, надо будет завтра попробовать y
Вторник, 20.04.2010, 17:35
Bl@ck
Проверенный
Сообщения: 2063
Репутация:
Спасибо,кратко и понятно :)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Форум
Социальные сети
Хостинг от uCoz