CakePHP - установка данных, полученных из вызова AJAX, к элементу

Я делаю новый ввод данных через AJAX. Он состоит из данных модели, а также некоторых данных HABTM. Я возвращаю все эти данные в виде объекта json из моего контроллера, и я хотел бы добавить элемент представления CakePHP, содержащий эти данные, в текущее представление, что-то вроде того, что делает твиттер, когда вы публикуете твит.

Как мне получить объект json, добавить элемент и установить данные из объекта json в указанный элемент? У меня есть хорошее представление о том, как добавить элемент, но я не совсем понимаю настройку данных.


person 8vius    schedule 13.09.2011    source источник


Ответы (2)


Если я правильно понимаю ваш вопрос, вы хотите использовать представления CakePHP для отображения результатов данных JSON?

Если это так, вы можете сделать это следующим образом:

В вашем контроллере:

function my_ajax_action() {

   $data = // whatever method you use to fetch your data
   $this->set(compact('data'));
   $this->layout('ajax');

}

Создайте файл представления: my_ajax_action.ctp, который выводит отформатированный массив $data.

Используйте ajax, чтобы вернуть HTML, а не важный бит JSON ‹-, и вставить его в DOM:

$.ajax({
    url: '/controller/my_ajax_action',
    success: function (result) {
        $('#myelement').html(result);
    }
});
person RichardAtHome    schedule 14.09.2011
comment
На самом деле это был элемент, который я хотел использовать. Итак, чтобы сделать это, вы используете действие $this-›render(), а остальное так же, как вы сказали, спасибо - person 8vius; 14.09.2011

Используйте $.getJSON, чтобы получить JSON, а затем выполните итерацию и установите значения на своей странице. Очень прямолинейно..

Посмотрите здесь http://api.jquery.com/jQuery.getJSON/

person Eriksberger    schedule 13.09.2011
comment
Да, я знаю, что могу это сделать, но я хочу использовать соглашения CakePHP, чтобы упростить свою работу, просто установив массив данных для элемента, и он отобразится правильно. - person 8vius; 14.09.2011
comment
Также я не говорю об элементе DOM, я пересмотрел свой вопрос, я говорю об элементе представления CakePHP. - person 8vius; 14.09.2011