Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Error de función no definida cuando si lo está

Estas en el tema de Error de función no definida cuando si lo está en el foro de Frameworks JS en Foros del Web. Estoy haciendo una aplicacion con Ajax que permite visualizar, modificar y borrar clientes. Para ello, tengo 3 DIV ( cabecera, menu y contenido). El DIV ...
  #1 (permalink)  
Antiguo 21/10/2006, 20:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 8 meses
Puntos: 0
Error de función no definida cuando si lo está

Estoy haciendo una aplicacion con Ajax que permite visualizar, modificar y borrar clientes. Para ello, tengo 3 DIV ( cabecera, menu y contenido).

El DIV de contenido es donde cargo páginas en php externas. Por ejemplo, cargo "mostrarclientes.php" (funcion que muestra todos los datos de un cliente en una tabla). Sin embargo, al lado de cada cliente tengo un boton "borrar" que con el evento "onclick" ejecuta una función en javascript "borrar()". Esta función se encarga de borrar el cliente pasandole como parametro el DNI y ejecuta mediante Ajax un archivo php "borraclientes.php" que recibe como variable POST el DNI.

El problema está en que cuando pulso el botón "borrar" no hace nada. En la consola javascript tengo un error de que la función "borrar" no está declarada (cuando si lo está) en "admin.php".

La página "admin.php" es la página que contiene el DIV "contenido" donde cargo "mostrarclientes.php". He probado a copiar la funcion borrar en "admin.php" pero el resultado es el mismo. Ya no se que hacer ...

El código de la función es este (he puesto una de ejemplo):

Cita:
function borrar(){

alert("hol";
}
El código de mostrarclientes.php es:

Cita:
include("conecta.php");
conecta();

$query0 = "select * from Clientes" ;
$result = mysql_query($query0); //resultado de la query
$num_results = mysql_num_rows($result);
echo "Total clientes: $num_results<BR>";
$ncampos = 3; //numero de campos en la tabla cliente a mostrar
?>


<TABLE WIDTH="100%" BORDER="1">
<TR>
<TD><B>NIF/CIF </B></TD>
<TD><B>Nombre </B> </TD>
<TD><B>Direccion</B></TD>
<TD><B>Acciones</B></TD>
</TR>
<?php for ($i=0 ; $i < $num_results ; $i++) {

$row = mysql_fetch_array($result);
//echo ($row['Subcategoria']);
?>
<TR>
<?php for ($j=0 ; $j < $ncampos ; $j++) { ?>
<TD> <?php echo $row[$j]; } ?>
</TD>
<TD><INPUT TYPE="submit" value="Modificar" onclick="borrar();"></td>
</TR>

<?php } ?>
</TABLE>
  #2 (permalink)  
Antiguo 22/10/2006, 00:26
 
Fecha de Ingreso: enero-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
Si no me equivoco ese error te lo da a veces cuando te falta alguna llave de cierre en el javascript.

Probaste a colocar una funcion bien simple asi como la de alert("hola") en mostrarclientes.php y luego abrir solamente mostrarclientes.php (no admin.php) para ver si funciona el "borrar"?
  #3 (permalink)  
Antiguo 22/10/2006, 07:20
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 8 meses
Puntos: 0
El problema no es de la función esa. Esa función la hice asi porque era la más básica que podía hacer. La verdadera función realiza una consulta sobre la BD enviando el nif como parámetro con el método get.

El tema está en:

Si meto la función borrar en el php que se carga en el div, o sea, "mostrarclientes.php" me dice que esa función no está declarada.

Si meto la función borrar en "admin.php" , que es la que contiene el DIV cabecera, el menu y el DIV donde se cargan las páginas externas, idem.

¿Alguna solución?

Mi objetivo es poder borrar un usuario desde una página dentro de un DIV.
  #4 (permalink)  
Antiguo 22/10/2006, 07:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 8 meses
Puntos: 0
He probado a ejecutar solo mostrarclientes y sucede lo mismo.

Mi head es este:

Cita:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script src="prototype.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">

function borrar(){

var url = "borrarcliente.php";
var pars = "valor=35478939m";
var ajax = new Ajax.Request( url, {
parameters: pars,
method:"get",
onComplete: procesaRespuesta
}
};
}

function procesaRespuesta (){
alert ("Operación procesada satisfactoriamente");
}

</script>
</head>
  #5 (permalink)  
Antiguo 22/10/2006, 09:23
 
Fecha de Ingreso: enero-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
Busqueda

Te decia que pruebes con el alert("Hola") para asi saber si el problema esta en que efectivamente por algun motivo la funcion no se ve o si es un problema de sintaxis.

De todas formas lo probé. Si el codigo que posteaste es tal cual lo estas usando, tenes una llave que deberia ser un parentesis, por eso da error:

Código:
    var ajax = new Ajax.Request( url, {
                parameters: pars,
                method:"get",
                onComplete: procesaRespuesta
                }
    };
Reemplazá esa llave por el parentesis de cierre y va a funcionar. Lo que yo hago siempre que me sucede algo asi es comentar toda la funcion y dejar solo un simple alert. Una vez que estoy seguro de que la funcion se "ve", empiezo a descomentar porciones y veo hasta donde llega sin errores.

Espero te haya servido. Saludos.
  #6 (permalink)  
Antiguo 22/10/2006, 09:31
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 8 meses
Puntos: 0
Muchas gracias, ese era un error.

Ahora me funciona si ejecuto el archivo mostrarcliente.php, pero me sigue diciendo que no existe si lo ejecuto desde admin.php

¿Cómo tendría que hacer para que me lo ejecute desde el DIV "contenido" ?


La llamada desde el menu a la función que carga mostrarcliente.php es esta

Cita:
<a href="#" onclick="carga('mostrarclientes.php');">Lista clientes</a>
  #7 (permalink)  
Antiguo 22/10/2006, 11:32
 
Fecha de Ingreso: enero-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
mmm, estuve leyendo un poco y parece que en este mismo foro hay alguien que tiene tu mismo problema. No puedo postearte el enlace porque me dice que necesito al menos 30 mensajes. Buscalo por el titulo "Javascript dentro de un div traido por ajax", el numero de thread es 430741.

Parece que efectivamente es algo que no se puede hacer. Ahi aportan una solucion "parcial", pero quizas te sirve.

Saludos
  #8 (permalink)  
Antiguo 23/10/2006, 07:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 8 meses
Puntos: 0
Al final lo he solucionado incluyendo todas las funciones javascript dentro del archivo principal (admin.php), ya que sería la cabecera común.

Gracias por la ayuda
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 15:34.