0

また問題が発生しました。説明させてください。

div 内で、他のサイトから HTML SIMPLE DOM を使用してデータをフェッチしました。お気に入り

<div id="data">.....</div>

ユーザーがページを更新するたびに更新されます。しかし、私は何か余分なものが欲しいです。私がしたいのは、5秒後に定期的にdiv(外部データがフェッチされて追加される内部)を更新することです。

PHP SIMPLE HTML DOM スクリプトとこの div の両方が同じページにあります。

これで、他のサイトからの新しいデータで5秒ごとにdivをデータIDで更新するjqueryまたはjavascriptコードだけが必要になり、ページ全体を更新する必要はありません。


アップデート:

このコードを使用しました

$(document).ready( function() {
function getTheTime(){
$.get('http://your-domain/file.php',function(data,status){
        $('#data').html(data);
});
}
var refresh = setInterval(
        "getTheTime()",
        5000
    );
});

しかし、問題は非常に奇妙です。なぜdivを更新しないのですか? 実際、間隔のアラートを設定しましたが、機能しませんでした。本当の問題は何ですか?file.php からデータを取得していないのはなぜですか?また、実際に div を更新していないのはなぜですか??

最新の jquery CDN を使用しています。http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js

4

3 に答える 3

0

setInterval関数を 5 秒ごとに呼び出す代わりに、単純なロング ポーリング手法を使用して div を 5 秒ごとに更新できます。問題setIntervalは、指定された時間 (ここでは 5 秒) 内にリクエストが完了しない場合ajax、一連の ajax リクエストが発生することです。

   function getTheTime(){
     $.ajax({
        type: "POST",
        url: "http://your-domain/file.php",            
        success: function(response) {
                   $('#data').html(response); //update your div
                 },
        complete: function(){
                   setTimeout(
                        getTheTime, /* Refresh time */
                        5000 /* ..after 5 seconds */
                    );                
                },
        error: function(XMLHttpRequest, textStatus, errorThrown){
                    //display you error message               
                },
        timeout: 5000 //Timeout is necessary to prevent chaining of unsuccessful ajax request    
      });        
    }
于 2013-08-06T17:47:34.960 に答える
0

間違いなくAJAXの仕事...

すでに jQuery を使用しているとのことなので、AJAX 関数をセットアップして一定間隔で実行する手順を簡単に説明します。

ステップ 1: DIV に入れたいデータを取得する PHP ファイルを作成します...

PHP ファイルを作成し、コードを挿入してデータを取得するだけです。

<?php echo "The time is " . date('Y-m-d H:i:s');

ステップ 2: AJAX 関数を設定して、そのファイルからデータを取得します...

function getTheTime(){
    $.get('http://yourdomain.com/ajax/getthetime.php',function(data,status){
        $('#data').text(data);
    });
}

(.load代わりに関数を使用することもできますが、データを DIV に入れる前に何かをしたい場合は、柔軟性がはるかに低くなります)。

ステップ 3: 一定間隔でその関数を呼び出します...

次に、新しい関数を 5 秒ごとに呼び出す間隔を設定する必要があります。

$(function(){
    var refresh = setInterval(
        getTheTime(),
        5000
    );
});
于 2013-08-06T14:40:29.703 に答える