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

funcion javascript en el action del form

Estas en el tema de funcion javascript en el action del form en el foro de Frameworks JS en Foros del Web. Hola a todos, me gustaria saber si desde un form puedo pasarle en el action algo de este tipo en login.php tengo el form: <form ...
  #1 (permalink)  
Antiguo 03/06/2009, 11:29
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
funcion javascript en el action del form

Hola a todos,

me gustaria saber si desde un form puedo pasarle en el action algo de este tipo
en login.php tengo el form:

<form name='formulario' method='post' action="javascript:paginas('paginas/validar_usuario.php', 'cos')">

lo que hace paginas, es cargar validar_usuario.php en un div id=cos de otra página principal.html.

el problema que me encuentro es que antes de poner la funcion js

<form name='formulario' method='post' action='paginas/validar_usuario.php'>
<p>Usuario:<input type='text' name='usuario' size="20" maxlength="20" /></p>
<p>Contrase&ntilde;a: <input type='password' name='password' size="10" maxlength="10" /></p> <br>
<input type='submit' name='Registrar' value='Login'>
</form>

la pagina validar_usuario.php recogia perfectamente los valores por S_POST. Los recogia así:

validar_usuario.php

<?php
session_start();

include("../conexion.php"); //conectamos con la base de datos

$dbname="matriz";

mysql_select_db($dbname)or die ('Error al seleccionar la Base de Datos: '.mysql_error());

if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
{
... //pasaba por aquí y todo ok
}else{
echo 'Debe especificar un usuario y password';
}
... ?>

Pero al incluir la funcion js en el action me sale el siguiente error

"Notice: Undefined index: usuario in C:\Program Files\EasyPHP 3.0\www\matrius\paginas\validar_usuario.php on line 35
Debe especificar un usuario y password "

Alguien me podría decir porqué?
Gracias de antemano
  #2 (permalink)  
Antiguo 03/06/2009, 11:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: funcion javascript en el action del form

Tema trasladado desde PHP
  #3 (permalink)  
Antiguo 04/06/2009, 01:18
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: funcion javascript en el action del form

Pon la funcion javascript 'paginas'

Si es una función en la que por medio de Ajax envías una petición al servidor debes mandar los parametros también. Por si sólo no lo hace.

Aunque como ya te digo sin ver el código no puedo decirte concretamente

Saludos,
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #4 (permalink)  
Antiguo 04/06/2009, 03:08
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: funcion javascript en el action del form

Hola ,
ante todo gracias por el interés,

ahora no tengo el código delante pero recuerdo que usaba la función páginas que usaba la siguiente:

function SetContainerHTML(id_contenedor,responseText)
{
mydiv = document.getElementById(id_contenedor);
//reemplazando por code salvamos bug de Explorer 7
responseText=responseText.split('SCRIPT').join('co de')
mydiv.innerHTML = responseText;
var elementos = mydiv.getElementsByTagName('code');
for(i=0;i<elementos.length;i++) {
var elemento = elementos[i];
nuevoScript = document.createElement('script');
nuevoScript.text = elemento.innerHTML;
nuevoScript.type = 'text/javascript';
if(elemento.src!=null && elemento.src.length>0)
{nuevoScript.src = elemento.src;}
elemento.parentNode.replaceChild(nuevoScript,eleme nto);
}
}

Y creo recordar que en la barra de estado del navegador decia "Listo con errores"
y mirando el error decía:

(lo digo de memoria)
Se esperaba un objeto
mydiv : nulo o ....

Supongo que el problema es de la funcion que te he puesto pero no tengo ni idea.
Gracias again.
  #5 (permalink)  
Antiguo 04/06/2009, 08:44
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: funcion javascript en el action del form

Hola de nuevo,
las funciones que utilizo son estas:

function SetContainerHTML(id,html,processScripts)
{
mydiv = document.getElementById(id);
mydiv.innerHTML = html;
if(processScripts!=false)
{
var elementos = mydiv.getElementsByTagName('script');
for(ii=0;ii<elementos.length;ii++) {
var elemento = elementos[ii];
nuevoScript = document.createElement('script');
nuevoScript.text = elemento.innerHTML;
nuevoScript.type = 'text/javascript';
if(elemento.src!=null && elemento.src.length>0)
{nuevoScript.src = elemento.src;}
elemento.parentNode.replaceChild(nuevoScript,eleme nto);
}
}
}


function paginas(url, id_contenedor){
var pagina_requerida;
if(window.XMLHttpRequest) { // no es IE
pagina_requerida = new XMLHttpRequest();
} else { // Es IE o no tiene el objeto
try {
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert('El navegador utilizado no esta soportado');
}
}

pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor);
}
pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
pagina_requerida.send(null)

}



function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 ))
{SetContainerHTML(id_contenedor, pagina_requerida.responseText, 1);
}
}


Gracias
  #6 (permalink)  
Antiguo 04/06/2009, 09:02
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: funcion javascript en el action del form

Bueno definitivamente creo que sé dónde está parte del problema, no sé si es a lo que apuntaba matak, pero creo que en la funcion

function SetContainerHTML(id,html,processScripts)
{
mydiv = document.getElementById(id);...
no se lo llego a pasar el id

No sé cómo solucionarlo pues la función que uso ya es bastante caótica para mi y no sé dónde meter ese parámetro:

echo sprintf('<a href="javascript:paginas\'mantenimiento.php\',\'co s\')">Mantenimiento</a>');

Si alguien pudiera orientarme lo agradecería.
Saludos
  #7 (permalink)  
Antiguo 04/06/2009, 14:12
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: funcion javascript en el action del form

Posibles causas:
1-El div "co s " que le pasas a la funcion no existe
2-Llamas a la funcion antes de que cargue el div (en este caso parece que no...)

echo sprintf('<a href="javascript:paginas\'mantenimiento.php\',\'co s\')">Mantenimiento</a>');

creo que debería ser:

echo sprintf('<a href="javascript:paginas(\'mantenimiento.php\',\'c os\')">Mantenimiento</a>');

Donde "cos" es el id del div donde cargas el contenido.

En cualquier caso, como no se lo que haces en el php con ésta llamada, pasale el Firebug para ver el error de javascript exacto
  #8 (permalink)  
Antiguo 04/06/2009, 15:33
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: funcion javascript en el action del form

Gracias Sether,
la verdad es que he vuelto a releer el post y ni yo mismo lo entiendo (el mío).

El div "id=cos" lo tengo creado en el index.html, por lo tanto creo que al ser la primera página el id ya está.

Entre tanto copy-paste se me han colado varios errores.
En definitiva, lo que yo quiero hacer es :

en validar_usuario.php tengo un form:

<?php
<form method="get" action="<a href='javascript:paginas('mantenimiento.php','cos' )'>Mantenimiento</a>">

<select name="manten">
<option value="1" >Test</option>
<option value="2" >Glosario</option>
</select>
<input type="submit" name="mantener" value='ok'>
</form>

...?>

lo hago para que me cargue mantenimiento.php en el "div id=cos" de index.html
además de pasarle el valor por GET

en mantenimiento.php recojo al principio de la página los valores así:


<?php
session_start();

if(isset($_GET['manten'])){
$codigomante=$_GET['manten'];
echo $codigomante;
}else echo 'no ha pasado nada';
...?>

Pero no hace nada, pasa por el else.

entonces, las funciones que uso y tengo en un fichero js son:


function SetContainerHTML(id,html,processScripts)
{
mydiv = document.getElementById(id);alert('contenido de mydiv :'+mydiv);
mydiv.innerHTML = html;
if(processScripts!=false)
{
var elementos = mydiv.getElementsByTagName('script');
for(ii=0;ii<elementos.length;ii++) {
var elemento = elementos[ii];
nuevoScript = document.createElement('script');
nuevoScript.text = elemento.innerHTML;
nuevoScript.type = 'text/javascript';
if(elemento.src!=null && elemento.src.length>0)
{nuevoScript.src = elemento.src;}
elemento.parentNode.replaceChild(nuevoScript,eleme nto);
}
}
}


function paginas(url, id_contenedor){
var pagina_requerida;
if(window.XMLHttpRequest) { // no es IE
pagina_requerida = new XMLHttpRequest();
} else { // Es IE o no tiene el objeto
try {
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert('El navegador utilizado no esta soportado');
}
}

pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor);
}
pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
pagina_requerida.send(null)

lo que he puesto en negrita es dónde creo que le pasa null.

En todo el web site me lo carga perfectamente, en el siguiente ejemplo lo hace ok:

echo sprintf('<li><a href="javascript:paginas(\'ejercicios/testgeneral.php?codigo=%s\',\'cos\')">%s</a></li>',$row['cod_test'],$row['nom_test']);

no sé que más probar.
  #9 (permalink)  
Antiguo 04/06/2009, 16:04
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: funcion javascript en el action del form

creo que al pasar la funcion javascript en el action del form no consigo pasarle el valor por el get o el post

<form name="formulario" method="post" action="javascript:paginas('paginas/validar_usuario.php', 'cos')">

Usuario:<input type='text' name='usuario'>
Contrase&ntilde;a:<input type='password' name='password'>
<input type='submit' name='Registrar' value='Login'>

</form>

deberia pasar algo más en el action para que pasen los valores a la siguiente página?
gracias
  #10 (permalink)  
Antiguo 05/06/2009, 02:36
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: funcion javascript en el action del form

Prueba esto...

Código javascript:
Ver original
  1. function paginas(url, id_contenedor){
  2.   var pagina_requerida;
  3.  
  4.   ///////////////////////////////////////////////////////
  5.   ///////////Recogemos los parametros del form///////////
  6.   ///////////////////////////////////////////////////////
  7.   usuario=document.getElementById('usuario').value  
  8.   password=document.getElementById('password').value
  9.   ///////////////////////////////////////////////////////
  10.   ///////////////////////////////////////////////////////
  11.   ///////////////////////////////////////////////////////
  12.  
  13.   if(window.XMLHttpRequest) { // no es IE
  14.     pagina_requerida = new XMLHttpRequest();
  15.   } else { // Es IE o no tiene el objeto
  16.     try {
  17.       pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
  18.     }
  19.     catch (e) {
  20.       alert('El navegador utilizado no esta soportado');
  21.     }
  22.   }
  23.  
  24.   pagina_requerida.onreadystatechange=function(){ // función de respuesta
  25.     cargarpagina(pagina_requerida, id_contenedor);
  26.   }
  27.   ///////////Esta linea Cambia///////////
  28.   pagina_requerida.open('GET', url+'?usuario='+usuario+'&password='+password, true) // asignamos los métodos open y send
  29.   ///////////////////////////////////////
  30.   pagina_requerida.send(null)
  31. }

En los elementos del formulario deberás añadir los id´s

Código html:
Ver original
  1. <form name="formulario" method="post" action="javascript:paginas('paginas/validar_usuario.php', 'cos')">
  2.  
  3. Usuario:<input type='text' id='usuario' name='usuario'>
  4. Contrase&ntilde;a:<input type='password' if='password' name='password'>
  5. <input type='submit' name='Registrar' value='Login'>
  6.  
  7. </form>

Espero tus noticias,

Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #11 (permalink)  
Antiguo 05/06/2009, 05:56
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: funcion javascript en el action del form

En vez de en el action, porque no pruebas a pasarselo en el evento onSubmit='funcion()' en el mismo <form> ?
  #12 (permalink)  
Antiguo 05/06/2009, 18:54
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 0
Respuesta: funcion javascript en el action del form

Hola matak,
lo probé y no funciona. Al parecer validar_usuario.php que recibe $_POST['usuario'] y $_POST['password'] recibe $_POST['usuario']="" y $_POST['password']="" , entonces no hace nada del código que tengo y sale por el else de echo 'Debe especificar un usuario y password';
}

En otro foro me han comentado que no se puede hacer lo de pasarle esa función en el action, y que debería hacerlo con JQuery (cosa que no tengo ni idea, buscaré por ahí)

Alcalina, ya probé de hacerlo así y tampoco funcionó.

Millones de gracias para ambos!

nota: de Alcañiz al cielo!
;)
  #13 (permalink)  
Antiguo 08/06/2009, 02:18
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: funcion javascript en el action del form

Con respecto a tu nota,...será de Calanda al cielo, ¿No?...jejej
Yendo al tema,...
Cita:
En otro foro me han comentado que no se puede hacer lo de pasarle esa función en el action, y que debería hacerlo con JQuery (cosa que no tengo ni idea, buscaré por ahí)
Mi humilde opinión es que eso no es asi,...jQuery no es más que un Framework para trabajar con Javascript de una forma mas transparete. Todo lo que se puede hacer con jQuery no sólo se puede hacer con Javascript sino que esta hecho en Javascript.

Prueba recoger las variables con $_REQUEST.

Saludos,...
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #14 (permalink)  
Antiguo 08/06/2009, 04:18
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: funcion javascript en el action del form

Y porque no enseñas el codigo php? Claro que se oude poner el evento onsubmit. Es más, no se si es legal o no, pero yo tengo hecho un formulario cone sta forma, y funciona a las mi maravillas:

method="post" action="javascript:Login();"

Saludos
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 17:55.