Con l'introduzione dei Deferred Objects è cambiato anche il modo di usare questo metodo low-level di jQuery.
Il modo corretto è il seguente:
$.ajax({
url: "ajax.php",
type: "post",
dataType: "json",
data: {
str: "Test"
}
}).done(function( response ) {
// La richiesta ha avuto successo
}).fail(function( xhr, status, error ) {
// La richiesta non ha avuto successo
});