Foros del Web » Programando para Internet » Javascript »

Misma Funcion Ajax para varios Div con nombre parecido

Estas en el tema de Misma Funcion Ajax para varios Div con nombre parecido en el foro de Javascript en Foros del Web. Buenos días. Una vez mas recurro a uds por ayuda. Me encuentro haciendo una app en la cual al seleccionar de una lista un producto ...
  #1 (permalink)  
Antiguo 18/10/2010, 10:35
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Misma Funcion Ajax para varios Div con nombre parecido

Buenos días.

Una vez mas recurro a uds por ayuda.

Me encuentro haciendo una app en la cual al seleccionar de una lista un producto me liste en otra lista la unidad de venta basica de ese producto.

mi lista de productos es esta :

<select name="pedido0" id="pedido0" onchange="if (formulario.pedido0.value) { leerUmb(formulario.pedido0.value,0,'umb0');}">
<option value="NULL">-- Seleccione el producto que desea --</option>
<?php
include "CargarArchProductos.php"; //archivo que tiene los productos en formato <option value="$codigo">$nombre</option>
?>
</select>

en el onchange, voy a la funcion en javascript llamada leerUmb que cargara las unidades de venta.

tengo un select "falso" en un Div en el cual se listaran las unidades de venta.
<div id="umb0">
<select name="falso0" id="falso0">
<option value="NULL">-- Seleccione UMB--</option>
</select>
</div>

la función listarUmb es la que sigue :

function leerUmb(valor,posicion,capa) {
crearObjeto(); //objeto ajax
if (objeto.readyState != 0) {
alert('Error al crear el objeto XML. El Navegador no soporta AJAX');
} else {
// Enviar la consulta
objeto.open("GET", "ListarUmb.php?Producto=" + valor+"&Posicion="+posicion, true);

// Preparar donde va a recibir el Resultado
objeto.onreadystatechange = procesaResultado2(capa);
objeto.send(null);
}
}

la funcion procesaResultado2(capa) es :

function procesaResultado2(capa) {
// Si aun esta revisando los datos...
if (objeto.readyState == 1) {
document.getElementById(capa).innerHTML = "Cargando datos...";
//document.getElementById('umb_'+posicion);//tomo el valor del segundo input
}
// Si el estado es 4 significa que ya termino
if (objeto.readyState == 4) {
// objeto.responseText trae el Resultado que metemos al DIV document.getElementById(capa).innerHTML = objeto.responseText;
}
}

si se fijan en el valor capa le estoy pasando 'umb0' que es el nombre del div en donde quiero que se muestre.

mi codigo se queda mostrando "Cargando datos..." en dicho div, y me sale el icono de errores en la pagina y dice "Type mismatch".

llevo dias dandole a la cabeza con esto, intente pasarle el valor "capa" que dijera 'umb'+i siendo i un contador, esto para no tener que hacer una funcion por cada fila en mi tabla de productos y me da el mismo error

si alguien tiene alguna idea de que tengo mal, se lo agradecería mucho

saludos.
  #2 (permalink)  
Antiguo 18/10/2010, 12:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Misma Funcion Ajax para varios Div con nombre parecido

la respuesta te está diciendo que el tipo de dato no es correcto. verifica los dos valores que pasas por la query
  #3 (permalink)  
Antiguo 18/10/2010, 13:44
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Misma Funcion Ajax para varios Div con nombre parecido

no creo que el error sea por el tipo de valor al formar la query ya que estos automaticamente se convierten a string cuando se concatenan. aunque bien como citan, el error se produce cuando se le pasa un tipo de valor incorrecto a una función -hasta el momento solo lo he visto en funciones-. de todos modos, veo algo que esta mal, objeto.onreadystatechange = procesaResultado2(capa);. fijate que ahí estas invocando la función y lo que devuelva ésta es lo que se le asigna a onreadystatechange. lo que tienes que hacer es crear una función anónima -también conocido como función literal- y dentro invocar la función con el parámetro.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 18/10/2010, 14:10
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Misma Funcion Ajax para varios Div con nombre parecido



Que bien!!!! ya estaba al borde del colapso!

Bueno no se si lo que hice se llama "función anónima " pero viendo en google, mas lo que me comentaste resolvi, la función queda asi :

function leerUmb(valor,posicion,capa) {
crearObjeto();
if (objeto.readyState != 0) {
alert('Error al crear el objeto XML. El Navegador no soporta AJAX');
} else {
// Enviar la consulta
objeto.open("GET", "ListarUmb.php?Producto=" + valor+"&Posicion="+posicion, true);

// Preparar donde va a recibir el Resultado
objeto.onreadystatechange = function procesaResultado2() {
// Si aun esta revisando los datos...
if (objeto.readyState == 1) {
document.getElementById(capa).innerHTML = "Cargando datos...";
}
// Si el estado es 4 significa que ya termino
if (objeto.readyState == 4) {
// objeto.responseText trae el Resultado que metemos al DIV de arriba
document.getElementById(capa).innerHTML = objeto.responseText;
}
}
objeto.send(null);
}
}

la función queda una dentro de la otra, y en la variable "capa" indico el div en el que se debe cargar la data.

Muchas Gracias @zerokilled y @IsaBelM por su pronta respuesta!!!

hasta una proxima !!!

Etiquetas: ajax, funcion, nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:51.