You seem to be fundamentally misunderstanding how AJAX works. You're expecting the page to refresh, but the code you're using explicitly tells the page not to refresh. First, there's this:
e.preventDefault();
This does exactly what it says, it prevents the default event. Assuming this is on a form, it's explicitly preventing the form from submitting. Then you have your AJAX request:
$.post('register.php', this.$form.serialize(), function(response) {
}, 'json');
As you've confirmed in FireBug, this sends a POST
request to the server. But... you're not doing anything with the response. Your function is empty:
function(response) {
}
So... what do you expect to happen? An empty function... doesn't do anything. You can confirm in FireBug whether the response is what you expect it to be, but that's an entirely separate issue. Whatever the response is, whether it's correct or not, isn't going to display on the page if you don't actually display it. Take a look at the examples in the documentation:
$.post( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
});
The response is placed in the $(".result")
element(s). In this code they're displaying the response. If you want to see the response, you have to display it somewhere as well.