AJAX и JSON в Codeigniter - PullRequest
       19

AJAX и JSON в Codeigniter

0 голосов
/ 08 декабря 2009

У меня есть веб-сайт, на котором я хочу получить результаты запросов через AJAX и JSON, но я абсолютно не знаю, как это сделать, у меня есть эта функция,

public function category() {
        $table = $this->uri->segment(2);
        $content_id = $this->uri->segment(3);
        $data['content'] = $this->site_model->get_content($table, $content_id);
        $this->load->view('template/right-content', $data);
    }

По сути, выполняемый запрос является динамическим в зависимости от того, какой URL-адрес передается, что мне нужно, чтобы пользователь щелкнул ссылку что-то вроде

<a href="/category/blog/1" id="blog">Read the blog</a>

По этой ссылке я получаю блог, и 1 передается на запрос, но мне нужно загрузить результаты в виде, загруженном в мой основной шаблон, а затем каждый раз, когда нажимается ссылка, происходит то же самое, не перезаписывая предыдущие данные. Кто-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2009

Если я вас правильно понимаю, вам нужно отправить запрос Ajax на этот URL, а затем добавить его в соответствующее место в вашем документе. Примерно так:

$("#blog").click(function () {
    var url = $(this).attr("href");
    $.ajax ({
        url: url,
        type: "POST",
        success : function (html) {
            $("#someDiv").append(html);
        }
    });
});

Так что представление Codeigniter должно содержать только содержимое, и, возможно, некоторую разметку, необходимую для его оформления. Контейнеры, куда направляется контент, должны быть уже на той странице, где находится ссылка.

0 голосов
/ 08 декабря 2009

Или, если вы действительно хотите, чтобы ваши данные возвращались в формате JSON, вы можете сделать что-то вроде этого

public function category() {
        $table = $this->uri->segment(2);
        $content_id = $this->uri->segment(3);
        echo json_encode($this->site_model->get_content($table, $content_id));

}

И, если вы используете вышеуказанный метод авторов с использованием $ .append, вы захотите изменить свой контроллер следующим образом:

public function category() {
        $table = $this->uri->segment(2);
        $content_id = $this->uri->segment(3);
        $data['content'] = $this->site_model->get_content($table, $content_id);
        echo $this->load->view('template/right-content', $data, TRUE);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...