Codeigniter içinde AJAX VE JSON

2 Cevap php

Ben bu işlevi var, ben AJAX ve JSON ile bazı sorgu sonuçlarını almak isteyen olduğum bir web sitesi var, ama bunu yapmak için nasıl hiçbir fikrim yok

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);
    }

Esasen çalıştırılan sorgu geçirilen ediliyor ne url bağlı olarak dinamik, I gereken, kullanıcı için böyle bir bağlantı şey tıklar

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

Bu linkten ben blog olsun ve 1 sorguya geçti, ama benim ana şablonu ve sonra her bir bağlantı önceki verileri üzerine yazmadan aynı şeyi yapmak tıklandığında için yüklenen bir görünümde sonuçları yüklemek gerekiyor, herkes yapar nasıl yapmak için herhangi bir fikrin var mı?

2 Cevap

Ben doğru anlamak, bu url için bir Ajax isteği göndermek ve sonra belgede uygun bir yere eklemek gerekir. Böyle bir şey:

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

Codeigniter görünüm sadece gerçekten, içeriği içermelidir, ve belki de gerekli olan bazı biçimlendirme bunu stil böylece. İçerik gider kaplar zaten bağlantı menşeli Sayfanın olmalıdır.

Eğer gerçekten istediğiniz veri json olarak geri gelmek istiyorsanız ya, böyle bir şey yapabileceğini

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));

}

. Eğer $ kullanarak yukarıdaki yazarları yöntemini kullanırsanız append VE, gibi sizin denetleyici değiştirmek isterdim:

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);
    }