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


Конкурс "Лучший отзовик"
× Быстрый вопрос
Пользователь месяца
ShowPrint ShowPrint 1-й за Март
Очков активности: 1 152 1 тема, 61 сообщение, 12 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Андрей WPMasterKZ
    #1

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

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

    Vmir
    Очков активности: 456 3 темы, 29 сообщений, 8 баллов репутации

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

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

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

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

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

    Mandarin
    Очков активности: 112.5 3 темы, 16 сообщений, 3 балла репутации

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

    pozitron123
    Очков активности: 67.5 3 темы, 6 сообщений, 3 балла репутации

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

    maxnik (konovalovpavel.ru)
    Очков активности: 66 1 тема, 19 сообщений, 2 балла репутации

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

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

  • Фотография re-search
    #9

    re-search
    Очков активности: 49.5 7 тем, 12 сообщений, 1 балл репутации

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

    Strazh
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

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


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

#1 Scream

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

Отправлено 21 Апрель 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
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 21 Апрель 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 Апрель 2010 - 22:56

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



Похожие темы

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

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