Using 'return' with an ajax callback renders an entire page before my content is loaded
You are missing the Drupal settings that include the Ajax settings, which is why the server doesn't know it should be ajaxified. You should (may) be able to fix it by changing this:

$content .= '&lt;/div&gt;';
print $content;


To this:

$content .= '&lt;/div&gt;';
$scripts = drupal_add_js();
if (!empty($scripts['settings']))
{
    $settings = '&lt;script type="text/javascript"&gt;jQuery.extend(Drupal.settings, ';
    $settings .= drupal_json_encode(call_user_func_array('array_merge_recursive', $scripts['settings']['data']));
    $settings .= ');&lt;/script&gt;';
}

print $content . $settings;
drupal_exit();