Ajax yöntemi denetleyicisi aynı işlevi çağırır fakat farklı alanlarda farklı sonuçlar yüklemek gerekiyor

3 Cevap php

Biraz küçük resim üzerinde şu anda (diğerleri) benim sitenin yeni bölümünde, benim web sitesi ile kullanıcı rulo sıkışmış ve soyut makaleler bunun altında görüntülenir alır ve onlar thumbnail dedi tıkladığında sonra yazı solda görünür am Sayfanın,

Küçük resim surronds bağlantısından href çekerek ve yöntem çağrısı için url olarak, sorun tıklama versiyonu da aynı işlevi çağrısı kullanarak olacak olmasıdır kullanarak ajax çalışır, ben göstermek için nasıl çalışamaz Hatta happends ne derinleşmesi farklı içerik, şu anda benim kod olarak bu var

    <?php
if(isset($content)) {
    foreach($category_name as $k => $v) {
        echo "<h2 class='$v[category_name]'><a href='#'>$v[category_name]</a></h2>";
        echo "<div class='$v[category_name]'>";
    }
    $replace = array(".", "png", "gif", "jpg");
    $count = 0;
    foreach($content as $k=>$v) {
    $count ++;
    $image_name = str_replace($replace, "", $v['image_name']);
    echo "<a class='contentlink' href='index.php/home/get_content_abstract/$v[content_id]'>";
    echo "<img src='/media/uploads/".strtolower($v['category_name'])."/".$image_name."_thumb.png' alt='This is the picture' />";
    echo "</a>";
    }
    echo "</div>";
//die(var_dump($content));
}
?>
<script>
    $("a.contentlink").mouseover(function(){
        var url = $(this).attr("href");
            $.ajax ({
                url: url,
                type: "POST",
                success : function (html) {
                    $('#abstract').html(html);
                }
            });
    });

    $("a.contentlink").click(function(ev) {
        ev.preventDefault();
        $('#main_menu').hide();
        var url = $(this).attr("href");
        $.ajax({
            url:url,
            type: "POST",
            success : function (html) {
            //  alert(html)
                $('#left-content').html(html);
            }
        })
    });

</script>

Çağrılan bir yöntem olup, bir

    public function get_content_abstract() {
    $this->load->model('content_model');
    if($query = $this->content_model->get_content_by_id($this->uri->segment(3))) {
        $data['abstract'] = $query;
    }
    $this->load->view('template/abstract', $data);

}

Bu, 3 ya da diğer herhangi bir sayı makaleler kimliği bağlantı / get_content_abstract / 3, takip ajax denir.

Nasıl sıralama yüzden tekrar bu fonksiyonu kullanabilirsiniz, ancak bu yerine sadece soyut maddenin vücut içerik linki tıklandığında ve mouseovered ise gösterebilirsiniz?

3 Cevap

Bir çağrı tipi değişken geçmek ve php kod bunun için kontrol edebilirsiniz. Ben senin ajax aramaları için data ilave edin.

$("a.contentlink").mouseover(function(){
        var url = $(this).attr("href");
            $.ajax ({
                url: url,
                type: "POST",
                data: "calltype=abstract",
                success : function (html) {
                    $('#abstract').html(html);
                }
            });
    });

    $("a.contentlink").click(function(ev) {
        ev.preventDefault();
        $('#main_menu').hide();
        var url = $(this).attr("href");
        $.ajax({
            url:url,
            type: "POST",
            data: "calltype=full",
            success : function (html) {
            //  alert(html)
                $('#left-content').html(html);
            }
        })

ajax çağrısı url bir GET değişken geçmek.

Sadece GET veya göstermek için içerik işleyicisi söyler POST aracılığıyla işleyicisi bir değişken geçmek. AJAX çağrıları basit olarak, aramaları kolaylaştırmak ve kullanmak load(). Eğer $ _GET veya $ _POST, kullanamıyorsanız, sadece URL veri eklemek:

$("a.contentlink").mouseover(function() {
    // URL becomes index.php/home/get_content_abstract/3/abstract
    $('#abstract').load($(this).attr("href")+'/abstract');
});

$("a.contentlink").click(function(ev) {
    $('#main_menu').hide();
    // URL becomes index.php/home/get_content_abstract/3/full
    $('#left-content').load($(this).attr("href")+'/full');
    return false;
});

Ve PHP, bu gibi bir şey kullanabilirsiniz:

public function get_content_abstract() {
    $this->load->model('content_model');

    if($this->uri->segment(4) == 'full') {
        // Load full content
    } else {
        // Load abstract
    }
    $this->load->view('template/abstract', $data);
}