1

これは私の最初の投稿であり、私は実際には開発者ではありません(より熱心ないじくり回しです)。

MySQL DBから取得した情報に基づいて、Webサイトで回転テキストを作成しようとしています(表示されるアイテムは10秒ごとにJQueryで切り替えられます)。

現時点では、ページの読み込みが完了した後に回転JQuery関数を適用する前に、MySQLの結果から直接HTMLを作成しています。私が抱えている問題は、HTMLを前もって作成/レンダリングすると、ページの読み込み時間が遅くなり、他の要素が作成されたHTMLの後ろにバックアップされることです。

これは、ドキュメントが読み込まれるまでJavascriptが実行されない場合でも発生します(DBクエリには数ミリ秒かかることもわかっています)。クエリに1行、10行、すべての行を返すように強制することで、問題を特定しました。変更のたびにページの読み込み時間が遅くなることに注意してください。

レンダリングされたHTMLは次のようになります。

<div id="container">
    <div class="item">
        <span class="field1">row 1 field 1</span>
        <span class="field2">row 1 field 2</span>
    </div>
    <div class="item">
        <span class="field1">row 2 field 1</span>
        <span class="field2">row 2 field 2</span>
    </div>
    <div class="item">
        <span class="field1">row 3 field 1</span>
        <span class="field2">row 3 field 2</span>
    </div>
    ...
</div>

私が持っている解決策(代替案に満足)は、最初の行を前もってレンダリングし、ページが読み込まれた後に残りを作成することです(回転には10秒の遅延があり、十分な時間であるはずです)。

これのもう1つの利点は、JQuery要素が回転プロセスを開始する前に追加のコンテンツがページの混乱を引き起こさないことです(これを回避することはできますが、2羽の鳥、1つの石など)

このフォーラムで、MySQLデータからJSON配列を作成するための投稿を見つけました。

<?php
$result=mysql_query("SELECT * FROM my_table");

$my_result_array=array();
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
    array_push($my_result_array,$row);
    }

$json_array = json_encode($my_result_array);
?>

この時点で、私は立ち往生しています。ロード後に必要なHTMLオブジェクトを作成するために、このフォーラムでさらに役立つ入力を見つけました。

var t = $.template('<div class="item"><span class="field1">${field1}</span><span class="field2">${field2}</span></div>');

$(selector).append( t , {
 dataPart1: jsonObj.field1,
 dataPart2: jsonObj.field2
});

私がはっきりしていないのは(JavascriptとJSONについてはほとんど知らない)、PHPで作成された配列テキストから、反復可能なオブジェクトを持つこの最後の部分に到達する方法です。

すべての提案は大歓迎です!

4

2 に答える 2

2

javascriptからAJAX投稿を行う必要があります:

$.post('file.php', {},
      function(data) {
            //the data variable holds the json returned from PHP
            //parse it
        var jsonObj= $.parseJSON(data);
            //then use it like an object
            $(selector).append( t , {
            dataPart1: jsonObj.field1,
            dataPart2: jsonObj.field2
          });
});

サーバー側では、json変数をエコーする必要があります。

file.php

$my_result_array=array();
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
    array_push($my_result_array,$row);
    }

$json_array = json_encode($my_result_array);
echo $jsonArray;
?>
于 2012-10-19T14:11:25.053 に答える
0

ページの読み込みを高速化する場合は、AJAXを使用してそのデータを読み込む必要があります。(この方法では、ページの読み込み時にデータが利用できないため、AJAXの実行中に空のギャップが生じることに注意してください)。

于 2012-10-19T14:07:30.517 に答える