views:

244

answers:

2

What do you think is better?

Use for Ajax result:

  1. HTML that was generated on server
  2. Return Data that would be used within template?

I think plus for server rendering are escaping, easy more complex logic, when much data needed!

+4  A: 

Both approaches have pros and cons. Returning JSON or XML from the server and using javascript templating to convert to HTML is more RESTful and has the advantage of separating data and presentation and allowing multiple clients to easily use it. The cons is that it is more work to do in javascript.

On the other hand if the server returns HTML all you have to do is inject it somewhere into the DOM. Unfortunately in this case markup and data are mixed and it would be more difficult for other clients to extract data without formating (imagine for example a desktop or mobile application that wants to consume services from your site).

IMHO if the only consumer is your site then returning HTML would be the better approach.

Darin Dimitrov
Having the server send HTML more tightly couples what you have on the server with what you have running in the browser. If you want to do more than just one thing with that result, even in the same page, then having the JSON will be a big win. Put another way, if you're generating dynamic HTML in the server, then you have added another place to look when you need to fix a layout problem and firebug isn't going to be as helpful because you're going to have to change server-side logic just to fix presentation issues.
Suppressingfire
+2  A: 

One advantage I see with 'processing json to create markup' on client side is decrease in size of the data being transferred.

The answer to your question would depend on what kind of application you are developing. Say if you have an application where you display a list of (constantly updating) status messages on a page; sending the html would be heavier as it would contain all markup for laying out the status messages. Instead, a json object would be light enough and can be processed easily on client side into required markup.

vsr