Of course there are many approaches like synchronous request, promise, but from my experience I think you should use the callback approach. It's natural to asynchronous behavior of JavaScript.
So, your code snippet can be rewritten to be a little different:
function foo() { var result; $.ajax({ url: '...', success: function(response) { myCallback(response); } }); return result;}function myCallback(response) { // Does something.}