Учебники

Zend Framework — Ajax

AJAX — это современная технология в веб-программировании. Он предоставляет опции для отправки и получения данных на веб-странице асинхронно, без обновления страницы. Zend Framework предоставляет возможность работать с моделью json через компоненты zend-view и zend-json . Давайте изучим программирование Zend AJAX в этой главе.

Установите компонент JSON

Компонент Zend json можно установить с помощью команды Composer, как указано ниже:

composer require zendframework/zend-json 

концепция

Zend Framework предоставляет два метода для простого написания веб-приложения с поддержкой AJAX. Они заключаются в следующем —

  • Метод isXmlHttpRequest () в объекте Request. Если выполняется запрос AJAX, метод isXmlHttpRequest () объекта запроса возвращает значение true, в противном случае — значение false. Этот метод используется для правильной обработки AJAX-запроса на стороне сервера.

Метод isXmlHttpRequest () в объекте Request. Если выполняется запрос AJAX, метод isXmlHttpRequest () объекта запроса возвращает значение true, в противном случае — значение false. Этот метод используется для правильной обработки AJAX-запроса на стороне сервера.

if ($request->isXmlHttpRequest()) { 
   // Ajax request 
} else { 
   // Normal request 
}
  • Zend / View / Model / JsonModel — JsonModel является альтернативой ViewModel, которая используется исключительно для сценариев AJAX и REST API. JsonModel вместе с JsonStrategy (для настройки в блоке менеджера представлений модуля) кодирует данные модели в Json и возвращает их в качестве ответа вместо представлений (phtml).

Zend / View / Model / JsonModel — JsonModel является альтернативой ViewModel, которая используется исключительно для сценариев AJAX и REST API. JsonModel вместе с JsonStrategy (для настройки в блоке менеджера представлений модуля) кодирует данные модели в Json и возвращает их в качестве ответа вместо представлений (phtml).

AJAX — рабочий пример

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

Шаг 1: Добавьте JsonStrategy в конфигурацию модуля

Обновите блок диспетчера представлений в файле конфигурации модуля учебника — myapp / module / Tutorial / config / module.config.php. Затем JsonStrategy будет работать с JsonModel для кодирования и отправки данных json.

'view_manager' => [ 
   'template_map' => array
      ('layout/layout' => __DIR__ . '/../view/layout/newlayout.phtml'), 
   'template_path_stack' => [ 
      'tutorial' => __DIR__ . '/../view', 
   ], 
   'strategies' => array('ViewJsonStrategy',), 
],

Шаг 2: Добавьте метод ajaxAction в TutorialController.php

Добавьте метод ajaxAction в TutorialController.php с помощью следующего кода —

public function ajaxAction() { 
   $data = $this->bookTable->fetchAll(); 
   $request = $this->getRequest(); 
   $query = $request->getQuery();  
   if ($request->isXmlHttpRequest() || $query->get('showJson') == 1) { 
      $jsonData = array(); 
      $idx = 0; 
      foreach($data as $sampledata) { 
         $temp = array( 
            'author' => $sampledata->author, 
            'title' => $sampledata->title, 
            'imagepath' => $sampledata->imagepath 
         );  
         $jsonData[$idx++] = $temp; 
      } 
      $view = new JsonModel($jsonData); 
      $view->setTerminal(true); 
   } else { 
      $view = new ViewModel(); 
   }  
   return $view; 
} 

Здесь ajaxAction проверит, является ли входящий запрос AJAX или нет. Если входящий запрос AJAX, то JsonModel будет создан. В противном случае будет создана нормальная модель представления.

В обоих случаях информация о книге будет выбрана из базы данных и заполнена в модели. Если модель является JsonModel, то будет вызвана JsonStrategy , и она будет кодировать данные как json и возвращать как ответ.

$ Query-> get (‘showJson’) == 1 используется для целей отладки. Просто добавьте showJson = 1 в URL, и на странице отобразятся данные json.

Шаг 3: Добавьте ajax.phtml

Теперь добавьте скрипт представления ajax.phtml для метода ajaxAction. На этой странице будет ссылка с меткой — Загрузить информацию о книге .

При щелчке по этой ссылке выполняется запрос AJAX, который извлекает информацию о книге в виде данных Json и отображает информацию о книге в виде отформатированной таблицы. Обработка AJAX выполняется с использованием JQuery .

Полный список кодов выглядит следующим образом —

<a id = "loadbook" href = "#">Load book information</a> 
</br> </br> 

<table class = "table"> 
   <tbody id = "book"> 
   </tbody> 
</table>  

<script language = "javascript"> 
$(document).ready(function(){  
   $("#loadbook").on("click", function(event){ 
      $.ajax({ 
         url:        '/tutorial/ajax', 
         type:       'POST',  
         dataType:   'json', 
         async:      true, 
         
         success: function(data, status) { 
            var e = $('<tr><th>Author</th><th>Title</th><th>Picture</th></tr>'); 
            $('#book').html(''); 
            $('#book').append(e); 
            
            for(i = 0; i < data.length; i++) { 
               book = data[i]; 
               var e = $('<tr><td id = "author"></td><td id = "title"></td>
               <td id="imagepath"><img src = ""/></td></tr>'); 
               $('#author', e).html(book['author']); 
               $('#title', e).html(book['title']); 
               $('#imagepath img', e).attr('src', book['imagepath']); 
               $('#book').append(e); 
            } 
         }, 
         error : function(xhr, textStatus, errorThrown) { 
            alert('Ajax request failed.'); 
         } 
      }); 
   }); 
}); 
</script>

Шаг 4: Запустите приложение

Наконец, запустите приложение — http: // localhost: 8080 / tutorial / ajax и нажмите ссылку Загрузить информацию о книге.

Результат будет таким, как показано ниже —

Ajax Page

Ajax Page

Страница Ajax с информацией о книге

Информация о книге

Страница Ajax с отладочной информацией