Should I include HTML markup in my JSON response?
- by Mike M. Lin
In an e-commerce site, when adding an item to a cart, I'd like to show a popup window with the options you can choose. Imagine you're ordering an iPod Shuffle and now you have to choose the color and text to engrave.
I'd like the window to be modal, so I'm using a lightbox populated by an Ajax call. Now I have two options:
Option 1: Send only the data, and generate the HTML markup using JavaScript
What's nice about this is that it trims down the Ajax request to the bear minimum and doesn't mix the data with the markup.
What's not so great about this is that now I need to use JavaScript to do my rendering, instead of having a template engine on the server-side do it. I might be able to clean up the approach a bit by using a client-side templating solution.
Option 2: Send the HTML markup
What's good about this is that I can have the same server-side templating engine I'm using for the rest of my rendering tasks (Django), do the rendering of the lightbox. JavaScript is only used to insert the HTML fragment into the page. So it clearly leaves the rendering to the rendering engine. Makes sense to me.
But I don't feel comfortable mixing data and markup in an Ajax call for some reason. I'm not sure what makes me feel uneasy about it. I mean, it's the same way every web page is served up -- data plus markup -- right?