2012-03-05 9 views
0

PHPファイルが 'true'を返すかどうかを確認するページを作成します。現在、私が働いて、代わりにdiv要素の完全なページのためにあるされていない、これを、持っている(私は代わりに、完全なページをリフレッシュするためのdivたい):PHPファイルがエコーの場合、jQueryリフレッシュ 'true'

<script type="text/javascript"> 
$(document).ready(function(){ 
    setInterval("checkTime()", 10000); 
    function checkTime(){ 
     $.ajax({ 
      url: 'checktime.php', 
      success: function(refresh){ 
       if(refresh == "true"){ 
        location.reload(true); 
       } 
      } 
     }); 
    } 

}); 
</script> 

EDIT:

ここに与えられた指示に従って、私は私のヘッダーに次のコードを配置:

$(document).ready(function(){   
    function checkTime(){ 
     $.ajax({ 
      dataType: 'json', 
      url: 'checktime.php', 
      success: function(data){ 
       if(data.refresh == "true"){ 
        $('#tv').load('tv.php'); 
       } 
      } 
     }); 
    } 
    setInterval(function() {checkTime()}, 10000); 
}); 

マイテレビdiv要素は次のようになります。

<div id="tv"> 
<? include 'tv.php' ?> 
</div> 

私は手動でchecktime.phpに行き、私のインデックスをリフレッシュすると、正しい時刻にtv divが適切に更新されます。しかし、何もヘッダーのjavascriptから発生するようです。

+1

「div refresh」とは何ですか? – gdoron

+0

「真」の応答を受け取ったときにdivに入れたい新しいデータがありますか? また、サーバーがあなたの$ .ajax呼び出しで適切な種類のデータを返すようにする必要があります。もしそうでなければ、データをいくつかのHTMLタグでラップすることになります。 –

+0

setInterval( "checkTime()"、10000); setInterval(checkTime、10000)にする必要があります。 – DG3

答えて

3

location.reload(true)を置き換える必要がありますが、それはリフレッシュを必要とするときのdivのhtmlを送信するためのURLが必要になります。次に、指定したdivにそのURLからのcontsentをロードします。私は、ケースサーバにおけるリフレッシュテキストへのトリムが送信し、余分なスペースや行が

は(jQueryのAJAXのショートカットメソッドの負荷を使用壊す追加)

http://api.jquery.com/load/

$(document).ready(function(){ 
    setInterval("checkTime()", 10000); 
    function checkTime(){ 
     $.ajax({ 
      url: 'checktime.php', 
      success: function(refresh){ 
       if($.trim(refresh) == "true"){ 
        $('#myDivID').load(refreshDivUrl) 
       } 
      } 
     }); 
    } 

}); 

EDIT:シンプルなロジックは実際にそこにありますこのため。そうでない場合は、HTMLを返送し、我々はchecktime.phpを返している正確に理解する必要があるだろう新しいHTML

$(document).ready(function(){ 
    setInterval("checkTime()", 10000); 
    function checkTime(){ 
     $.ajax({ 
      url: 'checktime.php', 
      success: function(refresh){ 
       if($.trim(refresh) != "false"){ 
        $('#myDivID').html(refresh) 
       } 
      } 
     }); 
    } 

}); 
+0

あなたは '$( '#myDivID')。load(window.location.href + '#myDivID')'のようなものが必要かもしれません。現在のページを照会し、要素の内容を取得し、要素に入れます。 –

+0

実際に最初のリクエストでhtmlを送り返すことは、ほとんどの場合意味があります。 – charlietfl

+0

checktime.phpが常に「偽」または必須のHTMLである限り、この方法(2番目の方法)が好きです。エレガント。しかし、私の答えによると... HTMLが簡単でダイナミックでない場合、これはGET自体がまだ作られており、その中で最も重大な部分であるため、過剰なものになる可能性があります。 HTMLが軽い場合は、X秒ごとにHTMLを投げてください。 –

0

は、私はそれがdiv要素をリフレッシュするためにどういう意味見当がつかないが、あなたはdiv要素を隠し、その後でそれをフェードインすることができます:location.reload(true)をあるあなたの問題を引き起こしている

$('#divId').hide().fadeIn('slow'); 
+0

文字通り「divをリフレッシュする」機能はないかもしれませんが、その意味ははっきりしていると思いました。変更されたコンテンツでdivを更新します。 –

0

一部。 は、再ロードを指示するであるため、ページがリロードされています。

しかし、1つの<div>のデータを変更するのは非常に簡単ですので、大きな問題はありません。

1つのdivのデータを変更するには、あなたが$("#target-div").html("New data");

1

を取得するために、余分なコールを保存し、ノーリフレッシュのために「false」を送り返します。 JSON形式でデータを返すことをお勧めします。将来、他の情報(たとえば、時間...!)が必要な場合は、拡張可能です。

2番目の点として、jQueryの​​関数を使用して、特定のdivにコンテンツを読み込むことができます。

JSONルートに行って、JSONに "refresh"という名前のメンバがある場合(trueまたはfalse)、修正された関数はこのような見て何か:提案として

$(document).ready(function(){   
    function checkTime(){ 
     $.ajax({ 
      dataType: 'json', 
      url: 'checktime.php', 
      success: function(data){ 
       if(data.refresh == "true"){ 
        $('#myDiv').load('myresource.php'); 
       } 
      } 
     }); 
    } 
    setInterval(function() {checkTime()}, 10000); 
}); 

:そのリフレッシュのdivのコンテンツが膨大でなく、インタラクティブでない場合は、理由だけではなく、継続的にそれを更新し、条件をドロップしますか?プロセスを大幅に簡略化します。

[更新] evalを使用するsetIntervalの文字列関数も使用しています。これは、考慮されていない無なし、とあなたが実際の関数を渡すことに切り替える必要があります。

setInterval(function() {checkTime()}, 10000); 

私はそれに応じて自分のコードサンプルを更新しました!

+0

'$( '#myDivID')が必要な場合があります。load(window.location。href + '#myDivID') ' –

+0

@Madmartigan私は私が従うかどうかわかりません。もう少し詳しく説明できますか?なぜ現在のコンテンツを現在のdivにロードしたいのですか?そのようなネットの変更はありません。 –