It might be useful to wrap the full html response into a root element if you are not sure if the desired elements are at root level or deep down somewhere in the dom tree:
success: function( data ){
// create a single container element, and put the html response into it
var dom = $('<div>').html( data );
// now you never have to use .filter(), just .find()
var title = dom.find('title').text();
var html = dom.find('.nav').html();
...
}