PHP ve jquery, javascript PHP değişken geçirmeden yardım

2 Cevap php

Ben fotoğraf yüklemek ve daha sonra bir bir geri görüntü olarak seçmek için, benim web sitesinin kullanıcılara izin vermek için çalışıyorum, yükleme çalışıyor, ama benim denetleyicisi ya da ben düşünüyorum görünümünde bir sorun var, ben bazı bana yardımcı olabilir seviniriz dışarı,

GÖRÜNÜM:

<div id="background-select">
<?php
$count = 0;
    if(isset($special)) {
        foreach ($special as $row) {
            print '<div class="select">';
                print "<a class='background_btn' href='index.php/home/set_background/".$row['background_id']."'>$count</a>";
            print '</div>';

                $background = $row['background_name'];
                echo $background;

        }
    }
    if(isset($generic)) {
        foreach ($generic as $row) {    
            print '<div class="select">';
                print "<a class='background_btn' href='index.php/home/set_background/".$row['background_id']."'>$count</a>";
            print '</div>';
                $background = $row['background_name'];
                echo $background;

            }

        }

    if(isset($user_background)) {
        foreach ($user_background as $row) {
            print '<div class="select">';
                print "<a class='background_btn' href='index.php/home/set_background/".$row['background_id']."'>$count</a>";
            print '</div>';
                $background = $row['background_name'];
                echo $background;
            }

        }
?>
</div>
<script type="text/javascript">
$("a.background_btn").click(function(ev){
ev.preventDefault();
alert("hello");
var url = $(this).attr("href");
alert(url);
$.ajax ({
    url : url, 
    type: "POST",
    success : function (html) {
        alert("<?php echo $background; ?>")
        $('#wrapper').css('background', 'url(/media/uploads/backgrounds/<?php echo $background; ?>)');
    }
})
});
</script>
<div id="wrapper">

KONTROL:

public function set_background() {
        $this->load->model('image_model');
        if($query = $this->image_model->get_background_by_id($this->uri->segments[3])) {
            //die(var_dump($query));
            foreach ($query as $row) {
                $data['background'] = $row['background_name'];
            }
        }
        $this->load->view('template/background-select', $data);
    }

Sorun = red.png için ilk döngü dönüş $ plan sonra içeri yüklemek için red.png ama bir şey elde edemezsiniz eğer ben sadece örnek için ilk döndürülen değere arka plan ayarlayabilirsiniz olduğunu

Herhangi bir kimse bir çözüm önerebilirsiniz?

2 Cevap

Sen AJAX kullanarak bir arka plan yüklemek için görünür. Ancak, ilk istekte $ arka değerini ayarlayın ve AJAX çağrı 'başarı' yöntemi döndürülen HTML kullanır asla. Sadece sayfa ilk yüklendiğinde zaman başlangıçta kuruldu plan. Sen AJAX arama arka döndürür, böylece javascript bu kullanabilirsiniz emin olun. PHP kullanarak 'başarı' yöntemi arka planı ayarlamak için çalışmayın.

Ayrıca, emin bu konuda olsa, ancak kontrolör o foreach her tekrarında yazılmadan yerine bir dizi veya hashmap yaratarak, tek bir özellik $ veri ['arka plan'] ayarlamak gibi görünüyor.

Ben ayrı PHP ve JS tutmak gerektiğini düşünüyorum. Eğer yönlendirme (veya AJAX kullanarak dinamik olarak gösterir) tamamlandıktan sonra yükleme işlemi görüntüleri sayfasını yükledi. Kullanıcı bir tarih resmi tıklandığında sonra belki bunun gibi background özniteliği değiştirmek:

<div id="back">
    <img src="foo.jpg" alt="..." />
    <img src="bar.jpg" alt="..." />
    ...
</div>

$(function(){
    $("#back img").bind("click", function(e){
        var src = $(this).attr("src");
        $("#back").css({"background-image": "url(/images/" + src + ")"});
    });
});