Шаг 99.
Библиотека jQuery.
AJAX. Передача данных на сервер. Выполнение запроса GET

    На этом шаге мы рассмотрим один из способов выполнения запроса GET.

    Чтобы продемонстрировать порядок взаимодействия между клиентом и сервером, мы напишем сценарий, который будет возвращать по одной словарной статье на каждый запрос. Выбор статьи зависит от параметров, передаваемых браузером. Наш сценарий будет хранить свои данные во внутренней структуре, такой как показано ниже:

<?php

$entries = array(
  'EAGLES' => array(
    'part' => 'Country Rock',
    'definition' => 'Eagles - американская рок-группа, исполняющая мелодичный 
                 гитарный кантри-рок и софт-рок.',
    'quote' => array(
      'В течение десяти лет своего существования (1971-81) пять раз возглавляла 
       американские поп-чарты синглов (Billboard Hot 100) и четырежды - хит-парад 
       альбомов.',
      'Сборник их величайших хитов <Their Greatest Hits 1971-1975>, 
       выпущенный в 1976 году, был распродан тиражом в 29 миллионов экземпляров 
       (став в соответствии с сертификацией RIAA бриллиантовым) и до сих пор 
       остается самым продаваемым альбомом в истории США.',
      'В общей сложности в Америке было реализовано 65 000 000 копий их альбомов, 
       что делает их третьим по популярности в США коллективом всех времен, 
       после британцев The Beatles и Led Zeppelin.',
    ),
    'author' => 'http://ru.wikipedia.org/wiki/Eagles',
  ),
  'EARTH AND FIRE' => array(
    'part' => 'Pop Rock',
    'definition' => 'Earth and Fire - нидерландский музыкальный коллектив в жанре 
                 прогрессивного рока и поп-музыки, основанный в 1968 году братьями 
                 Крисом и Герардом Куртсами.',
  ),
  'EKSEPTION' => array(
    'part' => 'Progressive',
    'definition' => 'Ekseption  - нидерландская прогрессив-рок-группа из 
                 города Харлем.',
  ),
  'ELECTRA' => array(
    'part' => 'Art Rock',
    'definition' => 'Electra (первоначально Electra-Combo) - рок-группа из 
         Дрездена, созданная в ГДР в 1969 году студентами Высшей музыкальной 
         школы Карла Марии фон Вебера.',
  ),
  'ELF' => array(
    'part' => 'Hard Rock',
    'definition' => 'Elf (в 1967-1968 годах - Electric Elves, в 1968-1969 годах - 
        The Elves) - американская рок-группа. Группа известна в основном благодаря 
        ее лидеру - Ронни Джеймсу Дио.',
  ),
  'ELIS' => array(
    'part' => 'Gothic',
    'definition' => 'Elis - музыкальный коллектив из Лихтенштейна, образованный в 
               2003 году и исполняющий готический метал..',
    'quote' => array(
      'Первоначальное название группы - Erben der Schopfung.',
      'Это было трио, в которое входили клавишник Оливер Фальк, гитарист Пит 
       Стрейт и вокалистка Сабина Дюнсер (27 июня 1977 - 8 июля 2006).',
      'В 2001 году они выпустили первый сингл "Elis", а за ним последовал 
       альбом "Twilight".',
      'Чтобы не ограничиваться студийной деятельностью, коллектив был пополнен 
       гитаристом Юргеном Брогером, ударником Фрэнки Келлером и басистом Томом 
       Саксером.',
    ),
    'author' => 'http://ru.wikipedia.org/wiki/Elis',
  ),
  'ELP' => array(
    'part' => 'Progressive',
    'definition' => 'Emerson, Lake & Palmer (сокращенно ELP) - британская 
       рок-группа направления прогрессивный рок, образованная в 1969 году, 
       названная по фамилиям трех ее участников: Кита Эмерсона, Грега Лейка 
       и Карла Палмера.',
  ),
  'ENCHANT' => array(
    'part' => 'Prog Rock',
    'definition' => 'Enchant - американский музыкальный коллектив из 
       Сан-Франциско, исполняющий композиции в стилях нео-прогрессивного 
       рока и арт-рока с 1989 года.',
  ),
  'EPICA' => array(
    'part' => 'Gothic Metal',
    'definition' => 'Epica - голландская группа, играющая музыку в стиле 
               симфоник-метал.',
  ),
  'EVANESCENCE' => array(
    'part' => 'Gothic Metal',
    'definition' => 'Evanescence (англ. Исчезновение) - американская рок-группа, 
             основанная в 1996 году вокалисткой Эми Ли и гитаристом Беном Муди.',
    'quote' => array(
      'Группа добилась большой популярности в начале 2003 с выходом альбома 
       Fallen.',
      'Fallen разошелся тиражом около 15 миллионов копий и принес группе 
       2 премии Грэмми.',
      'В 2004 г. вышел первый концертный альбом Evanescence, Anywhere but Home.',
      'В 2006 г. вышел второй студийный альбом, The Open Door, который разошелся 
       тиражом около 6 миллионов копий.',
    ),
  ),
  'EVEREVE' => array(
    'part' => 'Dark Metal',
    'definition' => 'EverEve - музыкальный коллектив из Германии, на раннем 
            этапе творчества исполнявший дум-метал с готическим уклоном, 
            впоследствии перешедший на современный готик-метал с элементами 
            альтернативного метала.',
  ),
);
?>

    Окончательная версия этого примера может хранить информацию в базе данных и загружать ее по мере необходимости. Так как в нашем случае данные являются частью сценария, программный код, извлекающий их, выглядит очень просто. Сценарий проверяет полученные данные и конструирует фрагмент HTML для отображения:

<?php

if (isset($entries[strtoupper($_REQUEST['term'])])) {
  $entry = $entries[strtoupper($_REQUEST['term'])];
  
  $html = '<div class="entry">';

  $html .= '<h3 class="term">';
  $html .= strtoupper($_REQUEST['term']);
  $html .= '</h3>';

  $html .= '<div class="part">';
  $html .= $entry['part'];
  $html .= '</div>';

  $html .= '<div class="definition">';
  $html .= $entry['definition'];
  if (isset($entry['quote'])) {
    $html .= '<div class="quote">';
    foreach ($entry['quote'] as $line) {
      $html .= '<div class="quote-line">'. $line .'</div>';
    }
    if (isset($entry['author'])) {
      $html .= '<div class="quote-author">'. $entry['author'] .'</div>';
    }      
    $html .= '</div>';
  }
  $html .= '</div>';
  
  $html .= '</div>';
  
  print($html);

if (isset($entries[strtoupper($_REQUEST['term'])])) {
  $entry = $entries[strtoupper($_REQUEST['term'])];
  
  $html = '<div class="entry">';

  $html .= '<h3 class="term">';
  $html .= strtoupper($_REQUEST['term']);
  $html .= '</h3>';

  $html .= '<div class="part">';
  $html .= $entry['part'];
  $html .= '</div>';

  $html .= '<div class="definition">';
  $html .= $entry['definition'];
  if (isset($entry['quote'])) {
    $html .= '<div class="quote">';
    foreach ($entry['quote'] as $line) {
      $html .= '<div class="quote-line">'. $line .'</div>';
    }
    if (isset($entry['author'])) {
      $html .= '<div class="quote-author">'. $entry['author'] .'</div>';
    }      
    $html .= '</div>';
  }
  $html .= '</div>';
  
  $html .= '</div>';
  
  print($html);
?>
Полный текст этого примера можно взять здесь.

    Теперь, если послать запрос этому сценарию, который мы назвали е.php, он вернет фрагмент HTML, соответствующий термину, отправленному на сервер в виде параметра запроса GET. Например, при попытке обратиться к сценарию, как e.php?term=EVANESCENCE, мы получим обратно фрагмент, как показано на рисунке 1.


Рис.1. Фрагмент HTML, соответствующий единственному термину

    Опять же обратите внимание на отсутствие форматирования, это обусловлено тем, что к данному фрагменту не применялись стили CSS, как и в примере с фрагментом HTML, что приводился на 91 шаге.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг