No puedes hacer eso que propones, ya que recuerda que las llamadas en AJAX son asíncronas, lo que puedes hacer es guardar la variable datos en una variable global y luego leerla:
Código:
var datos;
function cargar(url, metodo, parametros, id_capa, id_capa_espera, msj_espera, ejecutar)
{
var ajax = Conectar();
var cargador = document.getElementById(id_capa);
if(ajax)
{
ajax.open(metodo, url, true);
ajax.onreadystatechange = function() {
if(ajax.readyState == 1)
{
if(id_capa_espera !== "") {
cargador.innerHTML = msj_espera;
}
} else if (ajax.readyState == 4) {
var respuesta = ajax.responseText;
if(id_capa !== "") {
cargador.innerHTML = respuesta;
}
if(ejecutar !== "")
{
eval(ejecutar);
}
datos = respuesta;
alert( datos );
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(parametros);
}
}
Ya posteriormente al terminar la llamada AJAX puedes leer desde cualquier lado la variable datos.
Saludos.