我试图允许我网站的用户上传图片,然后选择一个作为背面图片,上传工作正常,但我的控制器或视图中有问题我想,我会很感激一些可以帮助我,
查看:
<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">
控制器:
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);
}
问题是我只能将背景设置为第一个返回值,例如,如果第一个循环返回$ background to = red.png,那么除了red.png之外我无法获取任何内容。
任何人都可以提出解决方案吗?
答案 0 :(得分:1)
您似乎使用AJAX加载背景。但是,您在初始请求中设置$ background的值,并且AJAX调用的“success”方法从不使用返回的HTML。仅在首次加载页面时最初设置的背景。你应该确保你的AJAX调用返回背景,所以你可以在你的javascript中使用它。不要尝试使用PHP在“成功”方法中设置背景。
另外,虽然不确定,但你的控制器似乎设置了一个属性$ data ['background'],覆盖了foreach的每次迭代,而不是创建一个数组或hashmap。
答案 1 :(得分:0)
我认为你应该保持单独的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 + ")"});
});
});