If im understanding you correctly, you want to make the jqXHR act like it succeeded, when it actually failed?
If so, .pipe is your friend :)
var jqDeferred = $.ajax(...something something);
//make the deferred always resolve as success, calling all success callbacks on original.
//AFAIK, dosent pass any arguments to the original success callbacks.
jqDeferred.pipe( null, function(args){ return $.Deferred().resolve(); });
//same as above, but try to pass all arguments through to the success callbacks.
jqDeferred.pipe( null, function(args){ return $.Deferred().resolve.apply(this, arguments); });
I wanted to do this recently and couldnt find any easy instructions, hope it helps.
Im not super sure about the argument passing, as I have only used the first form in anger - we didn't need any arguments passed to our success callbacks.
Pipe is wicked.