PHP和jquery,帮助将PHP变量传递给javascript

PHP和jquery,帮助将PHP变量传递给javascript,php,javascript,jquery,ajax,codeigniter,Php,Javascript,Jquery,Ajax,Codeigniter,我正在尝试允许我网站的用户上传图片,然后选择一个作为背景图片,上传效果很好,但我的控制器或视图有问题,我想,如果有人能帮我解决,我将不胜感激 视图: 问题是,我只能将background设置为第一个返回值,例如,如果第一个循环返回$background to=red.png,那么除了red.png之外,我无法加载任何内容 有人能提出解决方案吗?您似乎在使用AJAX加载背景。但是,您在初始请求中设置了$background的值,AJAX调用的“success”方法从不使用返回的HTML。仅显示首次

我正在尝试允许我网站的用户上传图片,然后选择一个作为背景图片,上传效果很好,但我的控制器或视图有问题,我想,如果有人能帮我解决,我将不胜感激

视图:

问题是,我只能将background设置为第一个返回值,例如,如果第一个循环返回$background to=red.png,那么除了red.png之外,我无法加载任何内容


有人能提出解决方案吗?

您似乎在使用AJAX加载背景。但是,您在初始请求中设置了$background的值,AJAX调用的“success”方法从不使用返回的HTML。仅显示首次加载页面时最初设置的背景。您应该确保AJAX调用返回后台,以便在javascript中使用。不要试图使用PHP在“成功”方法中设置背景


另外,虽然不确定这一点,但您的控制器似乎设置了一个单独的属性$data['background',在foreach的每次迭代中都覆盖它,而不是创建数组或hashmap。

我认为您应该将PHP和JS分开。完成上传过程后,您可以重定向(或使用AJAX动态显示)上传的图像页面。用户单击上载的图像后,只需更改背景属性,如下所示:

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

...
$(函数(){
$(“返回img”).bind(“单击”,函数(e){
var src=$(this.attr(“src”);
$(“#back”).css({“背景图像”:“url(/images/“+src+”)});
});
});

没错,我正在使用AJAX加载背景图像,我想我理解了你的意思,但是一个代码示例将非常有用,因为我假设它比重命名某些变量更复杂?如果我不在我的成功方法中设置背景,我该怎么做?如何做呢?制作一个php页面或控制器,接收您想要设置的背景ID,并让它返回一个带有“red.png”或类似内容的空页面。然后,在success方法中,“red.png”将是该方法的参数,因此您可以使用它来设置背景。我对所使用的MVC方法了解不够,无法给出完整的示例。。。对不起:-)
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);
    }
<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 + ")"});
    });
});