Foros del Web » Programando para Internet » PHP »

Error al enviar datos a una funcion javascript

Estas en el tema de Error al enviar datos a una funcion javascript en el foro de PHP en Foros del Web. buenas noches, envio los datos del resultado de una consulta hecha en php a una funcion javascript de la siguiente manera . . . echo" ...
  #1 (permalink)  
Antiguo 21/08/2010, 23:24
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 2
Error al enviar datos a una funcion javascript

buenas noches,
envio los datos del resultado de una consulta hecha en php a una funcion javascript de la siguiente manera
.
.
.
echo" <td><img style='cursor:pointer;' src='../../imagenes/edit.png' onClick='asignarcajadetexto(".$rowEmp['NOMBRE'].",".$rowEmp['FECHA1'].",".$rowEmp['FECHA2']."); ' /> </td>";
.
.
.
la funcion javascript es la siguiente

.
function asignarcajadetexto(vr2,vr3,vr4){
document.getElementById("ednom").String = vr2;
document.getElementById("fecha1").String = vr3;
document.getElementById("fecha2").String = vr4;

nota: si coloco .value da igual
}
.

ednom, fecha1, fecha2 son los id de los inputs de tipo text que he creado.

cuando ejecuto el evento onclick efectivamente me muestra los datos en las cajas de texto correspondientes, pero solo cuando los valores de la consulta son numericos, de lo contrario no muestra nada en las cajas de texto.

ejemplo 1. cuando el resultado al que doy clic es numerico.
nom_ fecha1_____ fecha2____
1000 2010-08-01 2010-08-01

si lo muestra en las cajas de texto, pero el campo fecha muestra un valor diferente es decir si la fecha en la base de dato es 2010-08-01 el resultado que saca en el input es 1998.

ejemplo 2. cuando el resultado al cual doy clic es texto.
nom_ fecha1_____ fecha2____
jaime 2010-08-01 2010-08-01

no lo muestra en las cajas de texto

la estructura de la tabla mysql es
nombre: string;
fecha1: date;
fecha2: date;

les agradezco cualquier ayuda, ya que no se porque extraña razon esta pasando esto.
  #2 (permalink)  
Antiguo 22/08/2010, 04:53
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Respuesta: Error al enviar datos a una funcion javascript

Hola.

En principio tienes un problema de comillas, cambia el echo por esto y nos cuentas:

Código PHP:
echo" <td><img style='cursor:pointer;' src='../../imagenes/edit.png' onClick='asignarcajadetexto('".$rowEmp['NOMBRE']."','".$rowEmp['FECHA1']."','".$rowEmp['FECHA2']."'); ' /> </td>"
Saludos!
  #3 (permalink)  
Antiguo 22/08/2010, 14:55
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Error al enviar datos a una funcion javascript

buenas tardes,

he probado como ud me dice pero sigue igual solo me mustra el resultado numerico, cuando el resultado es texto, no muestra nada y saca es siguiente error (error on page).

pero efectivamente probe que el problema es de comillas, porque he hecho esto mismo fuera de php en "html" pasandole a la misma funcion una constante de tipo texto si lo hace perfecto.

entonces como lo haria en php, como seria ese cuenta de las comillas ??????: stress:

gracias
  #4 (permalink)  
Antiguo 22/08/2010, 15:05
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Respuesta: Error al enviar datos a una funcion javascript

Hola.

Perdón, lo volví a leer y aún tiene un error. Fijate que en el tag abre los atributos con ' y luego la función js tiene más ', entonces lo cierra.

Código PHP:
echo" <td><img style=\"cursor:pointer;\" src=\"../../imagenes/edit.png\" onClick=\"asignarcajadetexto('".$rowEmp['NOMBRE']."','".$rowEmp['FECHA1']."','".$rowEmp['FECHA2']."'); \" /> </td>"
Si aún no funciona, abrilo en Firefox y andá a Herramientas » Consola de errores, ahí te dirá exactamente dónde está el error.

Saludos!
  #5 (permalink)  
Antiguo 22/08/2010, 18:09
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Error al enviar datos a una funcion javascript

buenas noches amigo geq, perfecto esa era la solucion. muchas gracias, me puede explicar como funcionan todos esas comillas y esos "\".

le agradezco si conoce un buen manual que me pueda facilitar.
  #6 (permalink)  
Antiguo 22/08/2010, 18:23
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Respuesta: Error al enviar datos a una funcion javascript

Hola

Es sencillo, un string abierto con ", se cierra con otro ". Si abres con ' se cierra con otro ', tanto en html como en php

En este caso, el problema es que al poner

Código:
onClick='funcion('parametro');'
lo que sucede es que la ' del parámetro cierra el onclick en lugar de ser parte del código javascript, por lo que todo falla. Entonces si cambiamos por

Código:
onClick="funcion('parametro');"
las " " corresponderán al atributo onClick y las ' solo serán parte del contenido.

En el php sucede lo mismo

Código PHP:
echo "<img src="http://www.forosdelweb.com/f18/error-enviar-datos-funcion-javascript-835513/..." />"; 
Puedes ver que las " " del src, cierran el echo en lugar de ser parte del string, como necesitamos. Entonces lo que se hace es escaparlas, es decir agregarle \ atrás para que no sean interpretadas como comillas, sino como un caracter más del string. Fijate la diferencia con los colores:

Código PHP:
echo "<img src=\"...\" />"
Lo mismo sucede con el signo $, para que no sea interpretado como una variable y otros caracteres de escape. Para más info: http://php.net/manual/en/language.types.string.php

Saludos
  #7 (permalink)  
Antiguo 22/08/2010, 18:31
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Error al enviar datos a una funcion javascript

muy sabio amigo geq, es bueno contar con ayuda de personas de experiencia.

Etiquetas: enviar, funcion, javascript
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 03:11.