Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Поймать ответ сервера (https://javascript.ru/forum/css-html/44270-pojjmat-otvet-servera.html)

totalavitaminoz 13.01.2014 13:01

Поймать ответ сервера
 
Вопросы глупые, но сам никак не могу догнать схему действий.
Учебник читал.
Есть некая страница. Например, показывает количество онлайн посетителей. Данные отправляет как сам сервер, так можно и вручную запросить нажатием кнопки. Всё это безе каких-либо перезагрузок самой страницы.

Я хочу написать скрипт, который бы мониторил изменение счётчика.
Как нажать кнопку я знаю, вырезать показатель счётчика могу, а как узнать, что мне сервер что-то отправил я без понятия.
В консоле вижу, что он мне периодически отдаёт json, а что с ним дальше делать?

И ещё разъясните такую вещь
Есть несколько кнопок. Их одновременно нажимают. Как мне узнать какой ответ для какой кнопки отправил сервер.
Как я понимаю, метод open() требует минимум два аргумента: тип запроса и урл. с первый всё ясно, а как точный урл узнать? через "копировать ссылку" добавляется только # в конце адреса.

Чувствую, что жутко туплю, но застрял и не могу во этом разобраться.

ksa 13.01.2014 13:23

Цитата:

Сообщение от totalavitaminoz
а как узнать, что мне сервер что-то отправил

Для этого есть калбек функции...

Цитата:

Листинг 5. Выполнить запрос с Ajax
function callServer() {
  // Получить city и state из web-формы
  var city = document.getElementById("city").value;
  var state = document.getElementById("state").value;
  // Продолжать только если есть значения обоих полей
  if ((city == null) || (city == "")) return;
  if ((state == null) || (state == "")) return;

  // Создать URL для подключения
  var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);

  // Открыть соединение с сервером
  xmlHttp.open("GET", url, true);

  // Установить функцию для сервера, которая выполнится после его ответа
  xmlHttp.onreadystatechange = updatePage;

  // SПередать запрос
  xmlHttp.send(null);
}

http://www.ibm.com/developerworks/ru...wa-ajaxintro1/

ksa 13.01.2014 13:25

Цитата:

Сообщение от totalavitaminoz
а как точный урл узнать?

Часть того УРЛ нужно кагбэ знать. :) Остальную часть ты сам формируешь, если нужно в запросе какие-то данные передать...

totalavitaminoz 13.01.2014 14:23

По поводу callback. Если я правильно понял, то это работает когда я передаю что-то серверу,т.е. выступаю инициатором обмена.
А если сервер самостоятельно передаёт браузеру новые данные, то как мне это отследить?

На счёт урл. На странице есть кнопка "обновить". Т.е. никаких данных мне передавать не надо.
Я её нажимаю и мне надо отследить ответ сервера именно на это действие, т.е. помимо заголовка ответа он должен вернуть новое значение количества онлайн посетителей.
Но если данные мне передавать не надо, а урл у всех кнопок выглядит как добавочный # в конце адреса, то я не могу сообразить как разобраться что к чему.

ksa 13.01.2014 19:38

Цитата:

Сообщение от totalavitaminoz
А если сервер самостоятельно передаёт браузеру новые данные, то как мне это отследить?

Цитата:

Сообщение от totalavitaminoz
Есть некая страница.

Тогда покажи как ты это организуешь... Т.е. каким именно образом сам сервер тебе там что-то шлет...

totalavitaminoz 13.01.2014 19:51

Ну, например, тот же яндекс.
На сервер пришло письмо, он передал это событие браузеру и подгрузилось только 1 письмо, а не вся страница.
По край немерее, я это себе так представляю :)

ksa 14.01.2014 08:55

Цитата:

Сообщение от totalavitaminoz
Ну, например, тот же яндекс.

Ты знаешь как там это организовано? Тогда повтори и будет тебе счастие... :)

Цитата:

Сообщение от totalavitaminoz
По край немерее, я это себе так представляю

От представлений до реализации "дистанция огромного размера" (с).

totalavitaminoz 14.01.2014 12:16

Так или инчае, они используют что-то, что браузер может обработать, значит, скорей всего это какая-то распространенная технология. Значит, она где-то описана)

ksa 14.01.2014 12:57

totalavitaminoz, вот и используй её... :D


Часовой пояс GMT +3, время: 12:52.