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 JavaScriptWhat'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 markupWhat'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?
Should I include HTML markup in my JSON response?
mvc;django;templates;json
JSON should just contain the data and no markup. In the long run this approach is more extensible because there is potential for using the JSON data in other parts of your site. If you include markup then using the same data to populate another template becomes much harder.