Foros del Web » Programando para Internet » PHP »

llamada a funciones javascript con php

Estas en el tema de llamada a funciones javascript con php en el foro de PHP en Foros del Web. Hola a todos. Mi duda es la siguiente: Estoy intentando llamar a una funcion javascript desde php de la siguiente forma: echo "d.add($num,0,$equipo)"; pero no ...
  #1 (permalink)  
Antiguo 28/04/2004, 06:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 13 años, 9 meses
Puntos: 5
Sonrisa llamada a funciones javascript con php

Hola a todos. Mi duda es la siguiente:

Estoy intentando llamar a una funcion javascript desde php de la siguiente forma:

echo "d.add($num,0,$equipo)";

pero no me interpreta que "add" es una funcion sino que me escribe literalmente la linea d.add(.........)

¿como se hace entonces?

He intentado hacerlo de otra forma:

<script>
d.add(<?echo $num;?>,0,<?echo $equipo;?>)
</script>

y de esta manera cuando el interprete traduce $equipo por su valor me da el siguiente error:

Si $equipo vale "pentium" el error pone:

pentium no esta definido. En cambio si en vez de poner en la funcion add() $equipo pongo un string normal no me da error.

¿sabeis porque puede ser?

Un saludo a todos.
  #2 (permalink)  
Antiguo 28/04/2004, 06:32
 
Fecha de Ingreso: noviembre-2003
Ubicación: Barcelona
Mensajes: 31
Antigüedad: 14 años, 1 mes
Puntos: 0
Normal,

El echo ".."; es para sacar por pantalla, para que se ejecute la función tienes que meterla directamente en el código php. Si es un formulario, en la propiedad OnClick=" " de algun boton....

Espero te sirva
  #3 (permalink)  
Antiguo 28/04/2004, 06:36
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 13 años, 9 meses
Puntos: 5
Gracias por responder pero es que esa funcion no va a ir integrada en ningun formulario sino que se ejecuta en un trozo de codigo.

¿como se hace entonces para ejecutarla desde php?
  #4 (permalink)  
Antiguo 28/04/2004, 07:24
 
Fecha de Ingreso: noviembre-2003
Ubicación: Barcelona
Mensajes: 31
Antigüedad: 14 años, 1 mes
Puntos: 0
No te habia entendido...tienes que hacer lo siguiente:

<head>
<script LANGUAGE="JavaScript">

function add($num,0,$equipo){
......
.......
}

</script>
</head>

<?
...
...

Y en el código la llamas

add(x,y) ...

?>

Espero que te sirva, tienes que declarar la función como script de javascript y despues llamarla directamente des del código.
  #5 (permalink)  
Antiguo 28/04/2004, 08:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Primero habrá que ver que tipo de datos requiere esa función o método de javascript ... NO es lo mismo que sean variables de javascript (sin comillas) que cadenas o numeros ..

Es decir .. si sabes como introducirías o llamarías a esa función javascript de forma manual (con unos datos de prueba) y te funciona con determinada sintax .. tan sólo tienes que reproducirla en la salida PHP o sustituir tus variabels PHP en el código que originalmente tendría que ir tu valor.


Código PHP:
<script LANGUAGE="JavaScript">

function add(num,0,equipo){

.....

}
</script>

<nose .. evento_javascript="d.add(<?echo $num;?>,0,'<?echo $equipo;?>' )">
Sería recomendable que pusieras esa función javascript (código) que pretendes llamar ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 28/04/2004 a las 08:17
  #6 (permalink)  
Antiguo 28/04/2004, 09:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 13 años, 9 meses
Puntos: 5
Gracias a todos por responder. He seguido vuestras anotaciones pero me sigue saliendo el error "informatica no is defined" siendo informatica el valor de $equipo.

Los parametros de la funcion javascript "add()" son dos numeros enteros y un string. Es este ultimo parametro string donde se me produce el error ya que cuando pongo:

d.add(<?echo $num;?>,0,'<?echo $dominio;?>')

no me interpreta al parecer $dominio como un string.

Ya he comentado que $dominio vale por ejemplo "informatica" pero no se porque no considera javascript que esto es un string.

¿alguien sabria solucionarlo?

Gracias de nuevo por haber respondido antes a mi duda.
  #7 (permalink)  
Antiguo 28/04/2004, 09:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero vamos a ver ..

Tu tienes claro y funcionando un ejemplo con datos fijos de esa función javascript?

Podrías poner el ejemplo del código completo de esa función javasript y su correspondiente llamada con datos de ejemplo fijos? .. Por qué sino, nunca vermos que es lo que requiere esa función como para ver como entregarle los datos que corresponda ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 28/04/2004, 10:00
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 13 años, 9 meses
Puntos: 5
Un ejemplo con datos fijos donde si funciona es:

..........
.........
<script type="text/javascript">
<!--
d = new dTree('d');

d.add(0,-1,'My example tree');
d.add(1,0,'Node 1','example01.html');
d.add(2,0,'Node 2','example01.html');
d.add(3,1,'Node 1.1','example01.html');
..........................................
..........................................

A la funcion add() ademas de los tres parametros comentados yo anteriormente se le pueden pasar mas pero bueno ahi no esta el problema porque tambien se le pueden pasar solo los tres primeros.

El problema esta en el tercer parametro que es un string y yo le paso una variable php. Me falla poniendo:

d.add(<?echo $num;?>,0,<? echo $dominio;?>) o
d.add(<?echo $num;?>,0,'<? echo $dominio;?>')

Un trozo del codigo javascript que contiene la funcion add es:


function Node(id, pid, name, url, title, target, icon, iconOpen, open) {

this.id = id;

this.pid = pid;

this.name = name;

this.url = url;

this.title = title;

this.target = target;

this.icon = icon;

this.iconOpen = iconOpen;

this._io = open || false;

this._is = false;

this._ls = false;

this._hc = false;

this._ai = 0;

this._p;

};



// Tree object

function dTree(objName) {

this.config = {

target : null,

folderLinks : true,

useSelection : true,

useCookies : true,

useLines : true,

useIcons : true,

useStatusText : false,

closeSameLevel : false,

inOrder : false

}

this.icon = {

root : 'img/base.gif',

folder : 'img/folder.gif',

folderOpen : 'img/folderopen.gif',

node : 'img/page.gif',

empty : 'img/empty.gif',

line : 'img/line.gif',

join : 'img/join.gif',

joinBottom : 'img/joinbottom.gif',

plus : 'img/plus.gif',

plusBottom : 'img/plusbottom.gif',

minus : 'img/minus.gif',

minusBottom : 'img/minusbottom.gif',

nlPlus : 'img/nolines_plus.gif',

nlMinus : 'img/nolines_minus.gif'

};

this.obj = objName;

this.aNodes = [];

this.aIndent = [];

this.root = new Node(-1);

this.selectedNode = null;

this.selectedFound = false;

this.completed = false;

};



// Adds a new node to the node array

dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {

this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);

};

Un saludo y espero que alguien sepa porque esa variable php no es entendida por javascript como un string.
  #9 (permalink)  
Antiguo 28/04/2004, 10:15
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El codigo PHP correcto es
Código PHP:
d.add(<?echo $num;?>,0,'<? echo $dominio;?>')
para generar algo como

d.add(69,0,'informatica')

Ahora bien, ¿que es lo que te muestra el navegador cuando das a ver codigo fuente? ¿Cual es el javascript realmente generado? Es que es lo unico que no dices en ningun mensaje.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 28/04/2004, 10:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Debería funcionar así (si dices que realmente el resto de parámetros de ese objeto son opcionales):

Código PHP:
d.add(<?echo $num;?>,0,'<? echo $dominio;?>')
Y . .si tines dudas de lo que está generando . .usa tu navegador: ver -> código fuente y observa el código que has generado.

Si lo que genera PHP .. es lo mismo que tus ejemplos .. debería funcionar sin problemas .. Lo que manda es lo que se generó.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 28/04/2004, 10:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 13 años, 9 meses
Puntos: 5
Hago exactamente lo que me deciis:

d.add(<?echo $num;?>,0,'<?echo $dominio;?>')

y me da el error:
unterminated string literal

El codigo que me genera el navegador y donde me da el error es:

<script>

d.add(1,0,'informatica <--- ahi me da el error
')
</script>

Un saludo y gracias de nuevo
  #12 (permalink)  
Antiguo 28/04/2004, 10:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Ya. El problema es que $dominio no es 'informatica' sino 'informatica
', con un salto de linea al final. Y en javascript es error de sintaxis poner un salto de linea dentro de una sentencia.

Puedes usar trim() (www.php.net/trim) para eliminar ese salto de linea del final de la cadena. Tambien revisaria el por que esta ese salto de linea. Puede que te falle la logica de tu aplicacion en algun sitio (no creo que hayas puesto ese salto a proposito).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 28/04/2004, 11:13
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 13 años, 9 meses
Puntos: 5
Gracias josemi. He aplicado la funcion trim() que me comentabas y ya me funciona. Al parecer era eso del salto del linea lo que generaba el error de sintaxis(aunque no se como se generó ese salto de linea)

Lo dicho, muchas gracias por tu ayuda ya que si no me hubieras comentado lo de la funcion esa trim() no creo que hubiera dado con ella nunca.

Muchas gracias.

Un saludo a todos los que me han ayudado.
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:48.