2011-02-03 17 views
0

これは実際にはこの "Why need to use JSON in php and AJAX"へのフォローアップの質問です。と[Db to PHP to JSON to AJAX to HTML]速度差

[S.1]

だから、PHPと低速のデータベースから直接AJAXとHTML内のデータを表示していますか?

Ex: just imagine this with AJAX but w/o JSON 
PHP $query ...etc 
echo "<p>".$row['name']." ".$row['comment']."</p>"; 

[S.2]

HTML

..and AJAX 
// Js 
$.getJSON("comments.php?jsoncallback=?", function(data) { 

    //loop through all items in the JSON array 
    for (var x = 0; x < data.length; x++) { 

    //create a container for each comment 
    var div = $("<div>").addClass("row").appendTo("#comments"); 

    //add author name and comment to container 
    $("<label>").text(data[x].name).appendTo(div); 
    $("<div>").addClass("comment").text(data[x].comment).appendTo(div); 
    } 
}); 

でそれを表示する前に最初のJSON

でPHP
Ex: this with JSON and 
for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) { 
    $row = mysql_fetch_assoc($query); 
    $comments[$x] = array("name" => $row["name"], "comment" => $row["comment"]); 
} 
$response = $_GET["jsoncallback"] . "(" . json_encode($comments) . ")"; 
echo $response; 

とDBからのデータを渡すよりより速い方法ですか?それとも速度差があるのでしょうか?

Tia、これは価値ある質問だと思いますが、私はまだJSONが初めてです。

+0

実際のスピードの違いは、実際のレンダリングがJSONのクライアント側(または「HTMLの作成」)で行われるということだけです。間違いなく、それはずっと速いです。 – Robus

答えて

1

あなたが言及しているのは、JSONではなくAJAXと呼ばれています(XMLではなくデータをエンコードするためにJSONを使用していますが)。 JSONは、データがエンコードされる形式です。 AJAXはJavaScriptを介してリクエストし、ページを動的に更新するプロセスです。

少なくとも初期ページリクエストではスピードではありません。利点は、文書全体を再要求するのではなく、ページの部分を選択してリロードできることです。その目的は、よりスムーズでより応答性の高いクライアントサイドのエクスペリエンスを提供することです。

チェックボックスの状態が変更された場合など、少量のデータをサーバーにプッシュ/プルしたい場合、最大の利点が得られます。これはAJAXで数バイトしかできません。伝統的にはポスト/リダイレクト/フォームの提出を行い、ページ全体を再度フェッチします。

+0

申し訳ありません、私は間違った質問をしたことに気づいたばかりですが、これは[DbからPHPへのJSON-AJAXからHTMLへ]および[DbからPHPへのAJAXからHTMLへ] - (JSONなしのもの)しかし、あなたが言ったように、それはスピードに関するものではありませんが、ページの一部をロードすることについて話しているのであれば、代わりに.loadのjQueryを使用する必要があります。それとも私はまだアイデアを得ていないのですか?ありがとう – Barry

+1

'.load'、' .get'、 '.ajax'を使うことができます。それらは基本的に、転送すると予想されるデータの種類に対して異なるデフォルトで同じことを行います。 JSONは、マークアップなしで純粋なデータをエンコードする便利な手段です。 – meagar