Перейти к содержимому


Пользователь месяца
OlgaGetman OlgaGetman 1-й за Декабрь
Очков активности: 2100 10 тем, 170 сообщений, 7 баллов репутации
ТОП самых активных за этот месяц
  • Фотография Ixman
    #1

    Ixman (o5cat.ru)
    Очков активности: 195 Вне конкурса за определение пользователя месяца

  • Фотография Андрей WPMasterKZ
    #2

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 153 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 126 0 тем, 21 сообщение, 4 балла репутации

  • Фотография OlgaGetman
    #4

    OlgaGetman
    Очков активности: 88.5 Вне конкурса за определение пользователя месяца

  • Фотография Cheaplinks
    #5

    Cheaplinks
    Очков активности: 54 0 тем, 18 сообщений, 2 балла репутации

  • Фотография Mandarin
    #6

    Mandarin
    Очков активности: 52.5 0 тем, 35 сообщений, 1 балл репутации

  • Фотография TimurR
    #7

    TimurR
    Очков активности: 49.5 Вне конкурса за определение пользователя месяца

  • Фотография Ilya74
    #8

    Ilya74
    Очков активности: 48 0 тем, 16 сообщений, 2 балла репутации

  • Фотография Constantine
    #9

    Constantine
    Очков активности: 48 5 тем, 17 сообщений, 1 балл репутации

  • Фотография magnet
    #10

    magnet (rbfxdirect.com)
    Очков активности: 30 0 тем, 10 сообщений, 2 балла репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 25.12.2018
  • Яндекс выдача: 20.01.2019
Топ 5 участников по репутации


JS отправка get запроса при нажатии на div

#1 Scream

Scream
  • Неактивные
  • 42 сообщений
  • Репутация: 0
0

Отправлено 21 April 2010 - 18:01

Помогите реализовать следующую задачу:

При нажатии на div1 вызывается функция in(), а на div2 вызывается функция out().
<div id="div1" style="display: block" onclick="in()">Вход</div>
<div id="div2" style="display: none" onclick="out()">Выход</div>

Какое должно быть содержание функции чтоб отправить GET запрос (на пример index.php?div=javascript)?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 21 April 2010 - 20:19

Scream, с использованием framework'ов типа jQuery или без них?

Если без, то код будет громоздким
Во-первых, советовал бы выделить в отдельную функцию создание объекта xmlHttpRequest, на основе которого формируется запрос к серверу
function getXmlHttp(){
  var xmlhttp;
  try {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
	try {
	  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) {
	  xmlhttp = false;
	}
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
Во-вторых, реализация самой функции-обработчика, та что выполняет запрос на сервер:
// javascript-код функции-обработчика
function in() {
   // (1) создать объект для запроса к серверу
   var req = getXmlHttp()  
   req.onreadystatechange = function() {  
	  // onreadystatechange активируется при получении ответа сервера
	  if (req.readyState == 4) { 
		 // если запрос закончил выполняться
		 if(req.status == 200) { 
			// если статус 200 (ОК) - выдать ответ пользователю
			alert("Ответ сервера: "+req.responseText);
		 }
		 // тут можно добавить else с обработкой ошибок запроса
	  }
   }
   // (2) задать адрес подключения
   req.open('GET', 'index.php?div=javascript', true);
   // объект запроса подготовлен: указан адрес и создана функция onreadystatechange
   // для обработки ответа сервера
   // (3)
   req.send(null);  // отослать запрос
}

То есть в вашем примере, при клике по первому блоку, будет вызвана функция in(), внутри которой происходит асинхронное обращение к серверу(асинхронное - значит процесс не ждёт пока сервер вернет ответ обратно, а продолжает свою работу, как только ответ сформирован и отослан, процесс прерывается для обработки пришедшего ответа). В результате исполнения функции при удачном запросе к серверу и положительном ответе (статус HTTP 200) в ответ мы получим Alert с текстом:

Ответ сервера: [и далее весь текст сформированный файлом, к которому мы обращались с запросом]

!Замечание, тут приведен простейший пример, технология Ajax не ограничивается подобными запросами и данной обработкой ответа. Существует множество способов получения ответа в различных других форматах, например XML или JSON. Конечно всё это не структуризовано, как при использовании FrameWork'ов, но работает :rolleyes:
  • 0

#3 gaaarfild

gaaarfild
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 21 April 2010 - 22:56

А вообще, почитай немного jQuery или MooTools. Это настолько просто и быстро, вместо того, чтобы писать кривые функции AJAX, которые где-то работают, а где-то глючат, достаточно написать 2-3 строчки в этих фреймворках и наслаждаться. =) Красота =) Я как начал их использовать, влюбился и больше ни за что не хочу своими руками изобретать кривой трамвай, когда все ездят на прямых! =)
  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru