Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Error al pasar el parametro

Estas en el tema de Error al pasar el parametro en el foro de Javascript en Foros del Web. Hola buenas, tengo un problema segun yo al pasar un parametro a una funcion js con un codigo php, tengo 2 funciones iguales que hacen ...
  #1 (permalink)  
Antiguo 01/09/2017, 12:49
 
Fecha de Ingreso: enero-2016
Ubicación: los andes
Mensajes: 13
Antigüedad: 8 años, 3 meses
Puntos: 0
Error al pasar el parametro

Hola buenas, tengo un problema segun yo al pasar un parametro a una funcion js con un codigo php, tengo 2 funciones iguales que hacen lo mismo, solo que una resive un string y la otra un entero. alguna idea de como solucionarlo? :C adjuntare el codigo y el error que sale.
Código:
<script> 
	function nombrar(prod){ 
		opener.document.formul.producto.value = "prod"
		window.close();
	} 
</script>
Esa es la funcion, que es la misma en los dos casos.

Código PHP:
while($row mysqli_fetch_assoc($result)) {
                        echo 
"<tr>";
                            echo 
"</td><td><input type='Button' value=".$row["nombre"]." onclick='nombrar(".'$row["nombre"]'.")'></td>";
                        echo 
"</tr>";
                    } 
y con eso le paso el valor. el error que me tira es que $row["nombre"] no esta definido, pero solo me sale el error cuando $row["nombre"] es un string, si fuera un numero no tiene
  #2 (permalink)  
Antiguo 01/09/2017, 14:46
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al pasar el parametro

Como no dices que quieres hacer voy a hacer unas suposiciones:

1. supongo que estas haciendo mal con tu parametro prod, en vez de "prod" deberia ser solo prod

opener.document.formul.producto.value = prod; (falta el punto y coma en tu cod.)

2. No se que hace esa etiqueta de cierre de data table (td) en tu echo al prinicipio

3. En cuanto al indef. aplica var_dump($row["nombre"]) para ver que tipo de dato te esta tirando si es null muestra tu consulta a la bd.

4. Esto onclick='nombrar(".'$row["nombre"]'.")' esta mal concatenado DEBERIA ser asi

onclick='nombrar(\"".$row["nombre"]."\")'

5. en html los atributos de los elementos, sean eventos tipos etc... por buena practica deben ser con doble comilla.
Ademas ni abres ni cierras el atributo type
No existe el el input type="Button" si "button" el navegador lo interpeta, pero eso no quiere decir que este bien
Otra buena practica y de hecho debería hacerse siempre es cerrar los elementos simples (sin etiqueta de cierre) ejemplo <img />


te dejo el fix de tu echo:

echo '<td><input type="button" value="'.$row["nombre"].'" onclick="nombrar(\"'.$row["nombre"].'\');" /></td>';

Te explico un poco esta parte:

onclick="nombrar(\''.$row["nombre"].'\');"

primero si quieres enviar un string como parametro deberia ser asi
onclick="foo('bar');"

Luego como estas usando la comilla simple en tu echo (') debes escaparla:
onclick="foo(\'bar\');"

Lo anterior no puse $ por algo didactico sabemos que bar es una viable php: $bar, entonces concatenas
onclick="foo(\''.$bar.'\');"
Por ultimo en eventos siempre termina las instrucciones (;) buena practica.

Eso saludos
  #3 (permalink)  
Antiguo 01/09/2017, 15:01
 
Fecha de Ingreso: enero-2016
Ubicación: los andes
Mensajes: 13
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Error al pasar el parametro

muchas gracias me solucionaste el problema, menos mal que no me entendiste jajajaj.
tenia el error en el concatenado, no tenia idea como se hacia. pero lo cambie a como me dijiste tu y funciono de inmediato. muchas gracias te pasaste!!
  #4 (permalink)  
Antiguo 01/09/2017, 15:24
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al pasar el parametro

Pequeño error de tipeo en el fix puse

nombrar(\'"

.$row["nombre"].'\'); y es

nombrar(\''.$row["nombre"].'\');

Etiquetas: form, funcion, js, parametro, php
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 14:20.