first off - it's nice to see that you care about your software design and it will definetely save you some headaches. I can't exactly tell why it should be a good thing to use die() for AJAX functions, as these will suppress any further output. What you should propably be doing is a stricter separation of the presentation and your logic, but that's something you should propably research about yourself.
For you current situation (it looks as if you were building a site navigation or something like it) it would be the best for all requests to return the same thing (-> leave die() out) and you to just cut away unneeded things in JavaScript, which will allow you to build a gracefully degrading AJAX site (users without JavaScript will still be be able to use the site)
If above is not true, you might as well - for a more general solution - include something like this:
function is_xhr_request()
{
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';
}
and a check like this:
if(is_xhr_request()){die();}
is propably a good workaround, assuming the header is set correctly (which it should be in most of the cases).
The function is taken from the Toro Framework