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


Пользователь месяца
TimurR TimurR 1-й за Август
Очков активности: 726 3 темы, 35 сообщений, 11 баллов репутации
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 207 2 темы, 17 сообщений, 6 баллов репутации

  • Фотография Ixman
    #2

    Ixman (o5cat.ru)
    Очков активности: 105 0 тем, 10 сообщений, 7 баллов репутации

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

    WGN (worldgamenews.com)
    Очков активности: 90 Вне конкурса за определение пользователя месяца

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

    magnet (rbfxdirect.com)
    Очков активности: 67.5 Вне конкурса за определение пользователя месяца

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

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

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

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

  • Фотография Алексей111
    #7

    Алексей111
    Очков активности: 36 6 тем, 6 сообщений, 1 балл репутации

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

    AnnaYa (topbase.ru)
    Очков активности: 36 2 темы, 6 сообщений, 2 балла репутации

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

    Developer
    Очков активности: 33 2 темы, 16 сообщений, 1 балл репутации

  • Фотография Игорь Ку
    #10

    Игорь Ку (dudesday.ru)
    Очков активности: 24 1 тема, 5 сообщений, 2 балла репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 19.11.2017
  • Яндекс выдача: 26.09.2018
Топ 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