0

我有一个<body style="<?php include("gallery.php"); ?>"其中gallery.php 包含一个随机图像数组,在每次重新加载时回显URL。

我想要一个按钮来刷新身体的背景图像。

我目前能够重新加载图像,因为新的 URL 被回显。

例如:

$(".refresh").click(function() {
    $("body").css("background-image", "url(<?php include("gallery.php"); ?>)");
});

但是在脚本中包含画廊文件后,它始终是相同的 url。

编辑 我的 PHP 如下:

$bg = array(
    array( "url" => "url_1" ),
    array( "url" => "url_2" ),
    ...
);


for ($i=0;$i<1;$i++) {
    $id = array_rand($bg);
    echo "{$bg[$id]['url']}";
    unset($ad[$id]);
};
4

3 回答 3

2

它将以另一种方式gallery.php输出图像(不仅仅是 url),因此您可以gallery.php像这样访问:

$(".refresh").click(function() { 
    $("body").css("background-image", 'url("http://www.mysite.com/gallery.php?'+Math.random()+'")'); 
});

使用Math.random()will 传递一个随机数以避免缓存。

所以在gallery.php你有类似的东西:

$bg = array(
    array( "url" => "url_1" ),
    array( "url" => "url_2" ),
    ...
);

shuffle($bg); // Random order

echo file_get_contents($bg[0]['url']);
//instead of echo $url;
于 2013-01-28T07:52:26.253 回答
1
$(".refresh").click(function() { 
    $.get('gallery.php', function(data) {
        $("body").css("background-image", "url('"+data+"')"); 
    }
});

PHP 是服务器端脚本语言,Javascript 是客户端脚本语言。我们不能像你以前那样使用它们。但是您可以从客户端向服务器发送请求以方便使用 URL 的正文。

于 2013-01-28T07:52:34.253 回答
0

IMO Ajax 太过分了,通过 php 脚本传输所有图像会产生不必要的内存开销。对于非常大的图像,它甚至可能在您的网络服务器上产生内存问题。如前所述,最好的方法是将所有图像放在一个 javascript 数组中。您可以将gallery.php一组 URL 输出到图像。

[ 'http://url1/', 'http://url2', ... ] // etc

然后你可以像这样在你的文件中调用它:

<script type="javascript">
  var backgroundImages = <?php include("gallery.php"); ?>;
  function refresh() {
    $("body").css("background-image", "url(" + backgroundImages[Math.round(Math.random() * backgroundImages.length)] + ")"); 
  }
  $(function() { refresh(); });
  $(".refresh").click(refresh);
</script>
于 2013-01-28T08:15:00.840 回答