次のコードで奇妙な問題が発生しています:
function getTrxData(trx,inputPar,outputPar,callback) {
var retorno = {};
var URL = '/XMII/Runner?Transaction=' + trx;
var params = "";
for(key in inputPar) 
    params = params + "&" + key + "=" + inputPar[key];
if(!outputPar) 
    outputPar = "*";    
if(params)
    URL = URL + params;
URL = URL + '&OutputParameter=' + outputPar;        
$.ajax({
    type: "GET",
    url: URL,
    async: true,
    success: function(data){
        retorno.datos = $.xml2json(data);
        retorno.tipo    = 'S';          // Success
        retorno.mensaje = "Datos obtenidos correctamente";      
        callback(retorno);
    },
    error: function(jqXHR, textStatus, errorThrown){
        retorno.tipo    = 'E';          // Error
        retorno.mensaje = "Error: " + textStatus;   
        callback(retorno);
    }
});
}
function crearSelect(trx,inputPar,outputPar,selectID,campoTextoXX,campoValor,valorDefault,callback2) {
// At this point campoTextoXX exists and has a value
getTrxData(trx,inputPar,outputPar,function(retorno2) {
            // At this point campoTextoXX is an object equal to callback2
    if(retorno2.tipo == 'E') {
        callback2(retorno2);
        return false;
    }
    var options = "";
    var selected = "";
    $.each(retorno2.datos.Rowset.Row, function(k,v) {
        if(valorDefault == v[campoValor]) {
            selected = " selected='selected'";
        } else {
            selected = "";
        }
        options = options + "<option value='" + v[campoValor] + selected "'>";
        options = options + v[campoTextoXX];    
        options = options + "</option>";
    });
    $("#" + selectID + " > option").remove();
    $("#" + selectID).append(options);
    callback2(retorno2);
});
}
そして、呼び出しは次のようになります。
crearSelect("Default/pruebas_frarv01/trxTest",{letra:  'V'},"*",'selectID',"CustomerID",'OrderID','',function(retorno) {
alert(retorno.tipo + ": " + retorno.mensaje);
});
問題は、campoTextoXXとcampoValorがコールバック関数内で値を取得しないことです。また、Chromeでデバッグすると、campoTextoXXには呼び出し元のコールバック関数の値があることがわかります。alert(retorno.tipo + ":" + retorno.mensaje);
次に何をすべきかわかりません。
何か案は?
どうも