использование jquery для публикации данных в zend framework

Если вы проверите это, у меня есть небольшая проблема со следующим: у меня есть форма (webbooks.phtml), в которой я использую функцию jQuery

http://pastebin.com/7Pbd43fC -webbooks.phtml (на самом деле это меню и на самом деле представление, в котором вы вводите продукт, который вы ищете)

http://pastebin.com/q8RJWdb7 -webbookscontroller (это контроллер, который использует API для получения данных из базы данных SQL на основе строки / числа … и т. д., предоставленной webbooks.phtml)

http://pastebin.com/vuy9GUvP -index.phtml (это пространство просмотра, в котором должен быть просмотрен результат).

Это массив, который я получаю:

{"book_title":"Bioethics in the 21st Century", "id":"1424", "isbn":"978-953-307-270-8"," unix_name":"bioethics-in-the-21st-century", "visible_online":"1"} 

Я вижу этот массив, когда я

 die((json_encode)$result); 

и я хочу, чтобы этот массив попадал на мой взгляд (index.phtml)? Я новичок в PHP, и я пытаюсь сделать что-то, что может быть плохой практикой и вполне может быть невозможным. Я в основном просто взламываю что-то вместе, чтобы проверить свои знания и посмотреть, что может сделать PHP. Это возможно?

Это пример базового использования вызова Zend Controller с ajax / json и получения ответа на тот же phtml, чтобы вы могли использовать его в своем коде.

В файле .phtml у меня есть javascript, который вызывает (в IndexController) действие ajaxAction ():

 <script language = "Javascript"> var param1 = 'first'; //or get value from some DOM element var param2 = 'second'; //or get value from some DOM element jQuery.ajax({ url: '/default/index/ajax', type: 'POST', data: {param1: param1, param2:param2 }, dataType: "json", success: function(result){ var return1 = result.return1; var return2 = result.return2; // return1 and return2 is value from php file. // fill out DOM element or do the windows.location() } }); </script> 

В IndexController ajaxAction () должен получить запрос:

 public function ajaxAction(){ $this->view->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $param1 = $this->_request->getParam('param1'); $param2 = $this->_request->getParam('param2'); // DO THE OTHER STUFF AND LOGIC HERE $results = array( 'return1' => 'value1', 'return2' => 'value2' ); $this->_response->setBody(json_encode($results)); } 

В любом случае я предлагаю прослушать @ jakenoble и посмотреть (узнать) Context Switching в Zend.

Если результат вашего клиентского вызова – это просто перенаправление на другую страницу, то почему бы не сделать все это на одном контроллере / action / viewscript, как показано ниже:

  1. Сделайте форму, отправьте запрос GET, а не POST
  2. Отправьте форму обратно на ту же страницу, выполните ваш удаленный вызов API и сделайте результаты.

Даже если вы хотите сделать это в двух действиях – один для отображения формы, другой – для отображения результатов – я не вижу, какое значение вы получаете от вызова AJAX.

Я пропустил какое-то другое требование?

Выполняя это с текущей структурой, вам нужно будет сохранить результаты удаленного вызова API в сеансе, а затем получить его после перенаправления. Do-able, но мне кажется ненужным, если это можно сделать в одном действии.