0

gallery.php<body style="<?php include("gallery.php"); ?>"がランダムな画像配列を保持し、リロードするたびにURLをエコーする場所があります。

体の背景画像を更新するボタンが欲しいのですが。

新しいURLがエコーされるため、現在、画像のリロードを1回実行できます。

例えば:

$(".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()すると、キャッシュを回避するために乱数が渡されます。

だから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スクリプトにパイプすると、不要なメモリオーバーヘッドが発生します。非常に大きな画像の場合、Webサーバーでメモリの問題が発生する可能性もあります。すでに提案されているように、最良の方法は、すべての画像を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 に答える