Possible Duplicate:
Return Value from inside of $.ajax() function
I'm working on a CakePHP app that makes use of widespread AJAX calls to controllers. I'm stuck with one particular AJAX call in which I'm trying to assign the response from the controller to a JS global variable. Here is the code:
window.errors = "";
function setErrors(err) {
    window.errors = err;
}
function ajaxCall(u, t, d, dt) {
    var type = typeof t !== 'undefined' ? t : "post";
    var dataType = typeof dt !== 'undefined' ? dt : "json";
    var success = false;
    var err = "";
    $.ajax({url: url, data: "data=" + d, type: type, dataType: dataType,
        success: function(d){
                if(d.hasOwnProperty('success') === false) { //json response
                    for(var i in d) { //fetch validation errors from object
                        for(var j in i) {
                            if(typeof d[i][j] === "undefined") {
                                continue;
                            }
                            err += d[i][j] + "<br/>";
                        }
                    }
                    console.log(err); //<=== displays correct value
                    setErrors(err); //<=== but somehow this seems to be failing??
                }
                else {
                   if(d.success === "1") {
                       success = true;
                }
            }
        }
    });
    return success; //<=== I suspect this might be the culprit
}
And this is how ajaxCall() is used:
function register() {
    var data = {};
    var $inputs = $("#regForm :input");
    $inputs.each(function(){
        data[this.name] = $(this).val();
    });
    data = {"User" : data }; //CakePHP compatible object
    data = JSON.stringify(data);
    //Here's the AJAX call
    if(ajaxCall('https://localhost/users/add', 'post', data, 'json')) {
        alert("Registered!");
    }
    else {
        alert(window.errors); // <=== empty string
        console.log("window.errors is: " + window.errors); // <=== empty string
    }
}
But on the Chrome JS console, window.errors returns the correct value (non-empty, validation error string).
I found a similar question that possibly might be addressing my issue (the return success immediately following the $.ajax() is being executed before the success: callback). How can I fix this without drastically changing the code (also, I don't want to make this a synchronous call)?
 
     
    