0

This is actually a follow up question to this "Why need to use JSON in php and AJAX".

[S.1]

So is displaying data in HTML with AJAX directly from PHP and database slower?

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

[S.2]

than passing first the the data from db with PHP in JSON

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;

before displaying it in 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);  
  }  
});  

Which is the faster way? or is there any speed difference at all?

Tia, hope this is a worthy question, i'm still new to JSON.

Community
  • 1
  • 1
Barry
  • 1,587
  • 2
  • 13
  • 19
  • I suppose the only real speed difference here is that the actual rendering happens on client side (or well, "creation of HTML") for JSON. Doubt it's much faster though, if at all. – Robus Feb 03 '11 at 22:19

1 Answers1

1

What you're referring to is loosely termed AJAX, not JSON (though you're using JSON to encode the data rather than XML). JSON is the format the data is encoded in; AJAX is the process of requesting it via JavaScript, and updating the page dynamically.

It's not about speed, at least not for the initial page request. The benefit is that you can selectively reload parts of your page, rather than re-requesting the entire document. The purpose is to provide a smoother, more responsive client-side experience.

The biggest speed benefits are gained when you want to push/pull small amounts of data to the server, for example when the state of a checkbox changes. This can be done with AJAX in only a few bytes, where traditionally you'd perform a post/redirect/get form submission, fetching the entire page again.

user229044
  • 232,980
  • 40
  • 330
  • 338
  • Sorry, it's just now that I realized that I asked a wrong question, this should be [Db to PHP to JSON-AJAX to HTML] and [Db to PHP to AJAX to HTML]<-(this one w/o JSON), but as you've said it's not about speed, but if you're talking about loading parts of the page then I should instead use .load of jQuery, am I right? or I am still not getting the idea? Thanks – Barry Feb 03 '11 at 23:08
  • 1
    You can use `.load`, `.get`, `.ajax`, they all fundamentally do the same thing with different defaults for the type of data they expect to transfer. JSON is just a handy means of encoding pure data with no markup. – user229044 Feb 04 '11 at 04:49