2012-03-06 19 views
0

各ページロードで10個のファイルのうち1個をランダムに表示するdivがあります。私はこれを8秒の設定時間間隔でリロードしたいと思います。リロードするたびに10個のファイルのうちの別のものを私に与えます。x秒ごとにランダムなdivコンテンツをリロードする

jQuery .loadを使用していくつかの関連する質問を読んだが、毎回特定のファイルをロードしていないので、これは私のコードではうまくいきません。

これは私のdivコンテンツです:

<div id="tall-content"> 

<? 

    $random = rand(1,10); 

    include 'tall-files/' . $random . '.php'; 

?> 

</div> 

おかげ

+0

上記のコードをjQuery経由で使用するPHPファイルを読み込めないのはなぜですか? – Blake

答えて

0

これを達成するためにPHPのみを使用することは実用的ではありません。この例では、jQueryとPHPを使用しています。あなたは、ユーザーが自分のページに戻って椅子に座っている間にこれをしたい場合は

$(document).ready(function() { 
    $("#div").load("random.php"); 
    var refreshId = setInterval(function() { 
     $("#div").load('random.php'); 
    }, 8000); 
    $.ajaxSetup({ cache: false }); 
}); 

random.php、答えはjavascriptの

$pages = array("page1.php", "page2.php", "page3.php", "page4.php", "page5.php"); 

$randompage = $pages[mt_rand(0, count($pages) -1)]; 

include ($randompage); 
0

ランダムなコンテンツを生成するためにPHPを使用している間、あなたはdiv要素は、ページ全体を更新せずにそのコンテンツを再読み込みすることができません。

より良い解決策は、AJAXを使用することです。 divコンテナの中にあるそのPHPコードを別々のファイルとして保存し、ajaxを使ってそのPHPファイルを要求することができます。無限ループを設定して、8秒ごとにphpファイルを要求することもできます。ここではサンプルですが、あなたはあなたの仕様にそれをコードし直す必要があります。

<script language="javascript" type="text/javascript"> 
<!-- 
function ajaxFunction(){ 
var ajaxRequest; 
try{ajaxRequest = new XMLHttpRequest();} catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){alert("Error: Browser/Settings conflict");return false;}}} 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      document.getElementById('tall-content').innerHTML = ajaxRequest.responseText; 
     } 
    } 
    var url = "random.php"; 
    ajaxRequest.open("GET", url, true); 
    ajaxRequest.send(null); 
} 
//--> 
</script> 

私はそこにあなたを助けることはできませんJavaScriptで多くをプログラムしていないので、唯一欠けている部分は、リフレッシュタイマであります。しかし、この場合の目標は、ファイル "random.php"を作成し、そこにランダムジェネレータを置き、上記のスクリプトを使用してrandom.phpにajaxリクエストを行い、そのPHPスクリプトの出力をdivに配置しますIDが "tall-content"のコンテナです。だから、実際には関数 "ajaxFunction()"を無期限にループして8000ミリ秒待つ別のjavascriptを作成する必要があります。

0

です。

たとえば、この関数を使用できます。

function recrusive_timeout_function() { 
      setTimeout(function() { 
        recrusive_timeout_function(); 
      }, 8000); 
    } 

そのdivにいくつかのhtmlを出力するphpファイルを含める場合は、 Ajaxはあなたの友人であり、JQueryはユーザーフレンドリーで使いやすいjavascriptフレームワークであり、あなたの考えを本当にうまく処理します。

関連する問題