Reden wir hier etwa über Kontrollstrukturen? Da kannste auch die header mit einbeziehen, zur Unterscheidung ob für einen ajaxrequest nur Daten gesendet werden sollen oder für einen legacy Request eine ganze HTML Seite. Also der ajaxrequest setzt einen speziellen header.
Und clientseitig bitte auch den Response Status mit ins Boot nehmen. Falls nämlich serverseitig eine Exception fliegt, kommt da auch kein JSON. MfG