-2

こんにちは、html テーブルを作成し、json を介してライブの行を入力し、php/mysql を介してデータベースから新しい情報のみを追加したいと考えています。

phpコード:

$res = mysql_query("select * from generalTabl");
while($row = mysql_fetch_array($res))
{
    $arr[] = $row;
}
echo '{"Info1":'.json_encode($arr).'}';

jqueryコード:

function getData(){
    var url = "/json.php";
    $.getJSON(url, function(jsonData) {
        $.each(jsonData.Info1, function(nr,jsonData){
            $("#tt").append('<tr>' +jsonData.titlu+'</tr>')
        })
    })
}
setInterval("getData()" ,1000);

そして、データベースからの新しい情報のみを最後にのみ作成する方法

問題は setInterval 起動するたびに、情報が新しい場合にのみ行を追加するのではなく、関数が新しい行を追加することです

4

2 に答える 2

1

ループ内では、data2代わりに使用しますjsonData

$.each(jsonData.Info1, function(nr,data2){
    $("#tt").append('<tr>' +data2.titlu+'</tr>')
})

サーバーから取得している JSON データには、というプロパティがあり、その中でInfo1呼び出されるプロパティを持つコレクションがあると仮定しますtitlu

新しいアイテムのみを追加するには、レコード ID (おそらくテーブルの一意の主キー) をチェックして、それがリスト/テーブルに既に存在するかどうかを確認します。そうでない場合は、追加します。

于 2013-03-07T15:18:44.927 に答える
0

手始めに、既存のコードに関するいくつかのメモ。

まず第一に、Info1キーの使用は完全に冗長です。PHP の最後の行を次のように変更します。

echo json_encode($arr);

次に、jQuery で$.each行を次のように変更します。

$.each(jsonData,function() {

関数の引数を使用していないように見えるため、関数の引数を削除したことに注意してください。

次に、ループ内で元のオブジェクトtitluプロパティを繰り返し呼び出していますが、これはおそらくあなたが求めているものではありません。ループの内容を次のように置き換えます。

$("#tt").append("<tr>"+this.titlu+"</tr>");

最後に、文字列をorに渡してはいけません。この場合、必要なのは を使用するだけなので、特に悪いです。setTimeoutsetIntervalsetInterval(getData,1000);


邪魔にならないように、各行に ID があることを確認することをお勧めします。次に、テーブルに追加するときに、次のようなことを試してください。

if(!document.getElementById("row"+this.id))
    $("#tt").append("<tr id='row"+this.id+"'>"+this.titlu+"</tr>");
于 2013-03-07T15:20:30.960 に答える