Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/12/2008, 04:29
elbetonet
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: problemas retornando valor desde funcion ajax a funcion javascript

Bueno todo empieza en esta funcion que crea dinamicamente unas celdas dentro de una tabla de mi html.

Código:
function insertarFila() 
{
	var elmTBODY = document.getElementById('tabla_dinamica');
	var elmTR;
	var elmTD;
	var elmText;
	var elmImput;
	var numElem = document.getElementById('solicitud_presupuesto').elements.length;
	//alert(numElem);
	elmTR = elmTBODY.insertRow(-1);
	//for (var i=0; i<3; i++) 
	//{
	numElem++;
//AQUI ES DONDE ESTA EL PROBLEMA YA QUE QUIERO ASIGNARLE EL VALOR LITERAL AL INPUT NO EL VALOR DE LA BASE DE DATOS QUE ES NUMERICO PARA LO CUAL NECESITO ACCEDER A LA BASE DE DATOS PARA HACER LA CONVERSION Y PARA ELLO UTILIZO LA FINCION AJAX DEVILVE_DESCRIPCION.
	var valor_campo = devuelve_descripcion("ciclo_formativo", "descripcion", document.getElementById('ciclo_formativo_pedido').value);
	alert(valor_campo);
	elmTD = elmTR.insertCell(0);
	elmTD.valign = "center";
	elmTR.setAttribute("align", "center");
	elmInput = document.createElement('input');
	elmInput.setAttribute("name", "ciclo_apoyo_"+numElem);
	elmInput.setAttribute("id", "ciclo_apoyo_"+numElem);
	elmInput.setAttribute("value", valor_campo);
	elmInput.size = '15';
	elmInput.setAttribute("readonly", "readonly", false);
	//elmInput.onchange = function(){buscaCodPos(this.value,this.id);};
	elmInput.style.verticalAlign = "middle";
	elmText = document.createTextNode('Ciclo Formativo ');
	elmTD.appendChild(elmText);
	elmTD.appendChild(elmInput);
Aqui os pongo ahora la funcion ajax.

Código:
function devuelve_descripcion(tabla, campo, valor)
{
	var oXmlhttp = zXmlHttp.createRequest();
	
	oXmlhttp.open("get", "funciones.php?funcion=devuelve_descripcion&tabla="+tabla+"&campo="+campo+"&valor="+valor+"&nocache="+ Math.random(), false);
	
	oXmlhttp.onreadystatechange = function ()
	{
		if(oXmlhttp.readyState == 4)
		{
			if(oXmlhttp.status == 200) 
			{
				var respuesta = oXmlhttp.responseText;
				//alert(respuesta);
				return respuesta;
			}
		}
	}
	oXmlhttp.send(null);
}
Como veras tengo la asincronia a false para que la funcion javascript espere el fin de ejecucion pero nada de nada he probado a ver con varios alert() que la variable respuesta no venia vacia o con caracteres raros y efectivamente develve el dato sin problemas.

Me gustaria no tener que recurrir a crear inputs de tipo ocultos para coger el dato pero veo que no me va a quedar otra opcion.....

Gracias de nuevo a todos por las respuestas.