0

みなさん、こんにちは。ページを読み込んでいないときにランダムな画像を表示しようとしています。

では、ページを更新せずにランダムな画像をページに表示するにはどうすればよいですか?

<script type="text/javascript">
    $(function () {
        $.ajax({
            type: "get", url: "Home/Oku", data: {}, dataType: "json",
            success: function (data) {
                for (var i = 0; i < data.length; i++) {
                   var newFirmDiv= $(' <img src="../../banner_image/' + data[i] + '" width="154px" height="108px"/>');
                   $(".firmShowCase").append(newFirmDiv);
                }
            }
        });
    });
</script>

これが、戻り値と配列を提供する私のアクションメソッドです。

 public ActionResult Oku()
    {
        var query = from table in db.news select table.news_image_name;
        return Json(query, JsonRequestBehavior.AllowGet);
    }

以下に示すように、結果は次のとおりです。

ここに画像の説明を入力してください

4

1 に答える 1

0

2 回目の試行:

最小値と最大値の関数

(http://www.naden.de/blog/zufallszahlen-in-javascript-mit-mathrandom)

function getRandom(min, max) {
 if(min > max) {
  return -1;
 }

 if(min == max) {
 return min;
 }

 var r;

 do {
 r = Math.random();
 }
 while(r == 1.0);
 return min + parseInt(r * (max-min+1));
}

そしてあなたのコード

for (var i = 0; i < data.length; i++) {
        randomIndex = getRandom(0, data.length-1);
        var newFirmDiv= $(' <img src="../../banner_image/' + data[randomIndex] + '"width="154px" height="108px"/>');
        $(".firmShowCase").append(newFirmDiv);
    }

ランダムな順序を維持したい場合...

...新しい配列のように保存する必要があります。その後、ajaxを介してデータベースまたは一時ファイルに保存できます。そして、現在のファイルの先頭に、既存の一時ファイルがあるかどうかを確認する必要があります。ユーザーにバインドする場合は、ランダムキーを生成して(時間のように)セッション変数に保存し、同じランダムキーでtmpファイルまたはデータベース内のデータに名前を付けることができます...これまでのところ、私の考えは、それがあなたが探しているものなら。もちろん、最初からサーバー側でこれを行う方が簡単です。

最初の答え:

(質問は本当に明確ではありませんでした-何かがうまくいかない場合など...)

まず、データは配列ではなくオブジェクトとして返されます。しかし、あなたは ajax 関数のパラメーターをよく理解していないと思います。

url パラメータには、実行するスクリプト (getImages.php など) を指定する必要があります。そこで、画像を収集し、解析して jason に出力し、データとして返されるようにする必要があります。

パラメータ データでは、いくつかのパラメータをスクリプトに渡すことができます。これは、php でそれらをデコードすることで取得できます。

たとえば、PHPを選択しました。

私が間違っていて、「Home/Oku」が何らかのスクリプトにつながる場合、それが何をするのか教えていただけませんか?

于 2012-08-10T14:09:23.390 に答える