Zend Framework - Генерация данных в контроллере и передача для просмотра в Javascript.Как? - PullRequest
0 голосов
/ 16 сентября 2010

У меня есть немного данных, которые я хочу использовать для построения поля выбора формы.JS, который генерирует форму (это часть плагина jqgrid), находится в представлении.Как мне получить данные из контроллера в javascript, чтобы я мог их использовать?

Чтобы просто получить что-то работающее, я попробовал следующее ...

В контроллере, который я создал действие длявернуть некоторые примеры данных:

public function testAction()
    {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        $a = "0:Select";
        return Zend_Json::encode($a);
    }

В представлении я выполняю ajax-вызов этого действия:

 var testselect = $.ajax({
     url: '/admin/sites/test',
     dataType: "json",
     complete: function(data) {
             console.log(data);
     }
 });  

И это возвращает объект XMLHTTPRequest, который частично содержит:

responseText:""
status:200
statusText:"OK"

Не должен ли responseText быть тем, что было возвращено при вызове /admin/sites/test?

На мой взгляд, это то, что происходит:

  1. представление делаетajax-запрос к тестовому действию контроллера сайтов в модуле администратора
  2. тестовое действие JSON кодирует содержимое $a и возвращает его
  3. complete функция обратного вызова testselect записывает результат на консоль и должен содержать $a в responseText.

Где я это неправильно понимаю?Есть лучший способ сделать это?Например, может ли контроллер передать необходимые данные объекту представления, а затем я каким-то образом получу доступ к ним в javascript (хотя как, без выполнения запроса ajax или помещения данных в какой-нибудь суперглобальный тип, такой как $ _SESSION, я не знаю)?

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 16 сентября 2010

Попробуйте это:

public function testAction() {
  $data = array('firstname' => 'Benny', 'surname' => 'Hill');
  $this->_helper->json($data);
}

См. Раздел о помощнике действий json в документации.

Вы также можете прочитать раздел о помощниках действий ContextSwitch и AjaxContext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...