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

Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Estas en el tema de Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo en el foro de Frameworks JS en Foros del Web. Holas comunidad, tengo e siguiente problema y no se como hacerlo, quisiera que me ayuden: tengo en XAJAX la version 0.2.4, la validacion de errores ...
  #1 (permalink)  
Antiguo 22/04/2010, 15:50
Avatar de skyz  
Fecha de Ingreso: abril-2010
Mensajes: 170
Antigüedad: 14 años, 1 mes
Puntos: 1
Exclamación Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Holas comunidad, tengo e siguiente problema y no se como hacerlo, quisiera que me ayuden:
tengo en XAJAX la version 0.2.4, la validacion de errores como esta aqui:

ARCHIVO funciones_xajax.php
Código PHP:
<?php
require("xajax/xajax.inc.php");
$P=new xajax();
function 
procesar_formulario($datosform)        //$datosform es un vector asociativo
   
{
     
$RESPUESTA = new xajaxResponse();
     
$nombre=$datosform['tfnombre'];
     
$paterno=$datosform['tfpaterno'];
     
$materno=$datosform['tfmaterno'];
     
$usuario=$datosform['tfnomusuario'];
     
$contrasena=$datosform['hfascci'];//Este valor es una cadena ya no un vector, porque cuando se pasa valores de JavaScript a 
     
$contrasenarep=$datosform['hfasccirep'];//Php, los toma como cadena(Es la unica forma en que los 2 lenguajes se comunican)
     
$salida="";
     if(
$nombre=="")
     {
       
$salida="Debes escribir el nombre";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     
     if(
$paterno=="")
     {
       
$salida="Debes escribir el apellido paterno";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     
     if(
$materno=="")
     {
       
$salida="Debes escribir el apellido materno";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     
     if(
$usuario=="")
     {
       
$salida="Debes escribir el nombre de usuario";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     
     if(
$contrasena=="")
     {
       
$salida="Debes escribir la contraseña";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     
     if(
$contrasenarep=="")
     {
       
$salida="Debes repetir la contraseña";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     if(
$contrasena!=$contrasenarep && $contrasena!="" && $contrasenarep!="")
     {
       
$salida="Las contraseñas son diferentes revisa";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       return 
$RESPUESTA;
     }
     
     if(
$salida=="")
     { 
       
$salida="saliendo";
       
$RESPUESTA->addAssign("mensaje","innerHTML",$salida);
       
$RESPUESTA->Addalert("por fin ....esto apenas lo hice");
       
//$RESPUESTA->addRedirect("index.php");//esto redirecciona a una nueva pagina
       
return $RESPUESTA;
     }
   }
   
$P->registerFunction("procesar_formulario");
   
$P->processRequests();
   
?>
luego en el html tengo:

Código HTML:
<?php
include_once("funciones_xajax.php");
?>
<head>
<?php
   $P->printJavascript("xajax/");
?>
</head>
<form action="" method="post" name="formregusr" id="formregusr">
<!--y el boton de envio-->

<input name="btnregusr" type="button" class="style4" id="btnregusr" value="Registrar Usuario" onClick= "xajax_procesar_formulario(xajax.getFormValues('formregusr'))"> 
Bueno, hasta aqui todo bien muestra los errores de que tiene que estar lleno el campo correspondiente, me muestra una alert de que se llenaron los campos y me redireccona a otra pagina, despues de llenar todo bien.
Pero cuando me redirecciona a la pagina solo es una redireccion y nada mas los campos no se los puede tomar, quisiera que me redireccione con todos los campos (el formulario completo), para procesarlo en otra pagina proceso.php y en ahi añadir a la base de datos y demas.
Me podrian ayudar con esta duda, porfavor, quisiera hacerlo con esta herramienta XAJAX, porque ya le agarre el hilo
  #2 (permalink)  
Antiguo 22/04/2010, 17:13
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 4 meses
Puntos: 9
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

En primer lugar no es necesario que hagas un return respuesta a cada condición basta con un:


Código PHP:
if($nombre==""
     { 
       
$salida="Debes escribir el nombre"
     } 
//.... 
pero ojo, la primera condicional debe ser IF... y todas las demas que siguen ELSEIF



Y al final generar el inner: (Dentro del Else puedes guardar los datos de entrada del formulario)

Código PHP:
if($salida != ""
     {  
$respuesta->Assign("mensaje","innerHTML","$salida"); 
    } 
else{
    
//Hago lo que quiero
     
$sql="INSERT INTO ...";
     
$respuesta->Assign("mensaje","innerHTML","TODO OK");
}
return 
$respuesta
Solo aplicas un return que esta fuera del IF condicional.
__________________
Quitenme la vida pero no la bebida.
  #3 (permalink)  
Antiguo 22/04/2010, 17:34
Avatar de skyz  
Fecha de Ingreso: abril-2010
Mensajes: 170
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Bueno cesarpunk yo ya sabia hacer eso(introducir en la misma funcion los valores de la base de datos o hacer lo que quiera), lo que yo queria es ir a otra pagina por ejemplo proceso.php y ahi recien introducir los datos a la base de datos.
Una ayudaa
  #4 (permalink)  
Antiguo 08/05/2010, 13:12
Avatar de skyz  
Fecha de Ingreso: abril-2010
Mensajes: 170
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Se puede pasar a otroa pagina, para procesar la informacion con XAJAX
Una respuesta
  #5 (permalink)  
Antiguo 11/05/2010, 01:21
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Hola.

Yo no estoy puesto en ajax, pero por lo que tengo entendido es como mezclar php y javascript. Entonces no está muy lejos de lo que suelo hacer en el curro.

Por lo que tengo entendido, las variables en javascript sólo están disponibles en la página que esta en ejecución. Sin embargo las variables de php se pueden enviar a otra página (solo a una) a través del método "get" o "post".

Habitualmente valido los formularios en javascript y después envio las variables con post.

Entonces creo que lo que te falta es:

<form action="proceso.php" method="post" name="formregusr" id="formregusr">

y hacer desde tu función un submit. (en javascript sería: document.formregusr.submit();)

Aunque yo estoy acostumbrado a que la validación sea en js y uso el evento del formulario onSubmit="return valid()" donde valid() es la función de validación que he diseñado, que en lugar de forzar el envio del formulario hace: "return true;".

Esto tal vez no te resuelva el problema, pero lo mismo te da una idea de como resolverlo.

Saludos y suerte.
  #6 (permalink)  
Antiguo 13/05/2010, 03:40
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Hola!!

He leído este post buscando una solución a mi problema y creo que se adapta bastante bien. Pero si no recibo una respuesta en breve abriré uno nuevo con mi duda específica.

Vereis, tengo un formulario en php que necesito validar, no sólo con javascript sino también con xajax.
Os cuento, es un formulario en el que, si pulsas en un radiobutton se despliega el resto del formulario y debes de hacer unas acciones determinadas.
Con javascript valido que se haia seleccionado al menos 1 checkbox de los que muestro, usando el evento onSubmit del formulario.
Luego, también en el evernto onSubmit de ese formulario necesito validar si se han introducido otros datos provenientes de un par de select(la introduccion de esos datos la hago con xajax) preguntando a la base de datos.

Os muestro un esquema de mi formulario

Código PHP:
Ver original
  1. function muestraForm($dato1, $dato2)
  2. {  
  3.     echo"<div id = 'formulario' style='min-height: 800px'>
  4.     <table id='itsthetable'>
  5.     <form action='./Index.php?action=muestraotroform&parametro=$dato1' method='post' name='formu' id='formu' enctype='multipart/form-data' onSubmit='return xajax_compruebaInserciones(document.formu.dato2.value, document.formu.radiodato.value); javascript: return validaForm(this) '>
  6. .
  7. .
  8. .
  9.     <tr>
  10.         <th>&iquest;Pregunta?</th>
  11.         <td>
  12.             <input type='radio' name='radiodato' id='radiodatosi' value='1' onClick='javascript:compruebaSeleccion(this.name, this.value)' />S&iacute; <input type='radio' name='radiodato' id='radiodatono' value='0' onClick='javascript:compruebaSeleccion(this.name, this.value)'/>No
  13.         </td>//si elijo sí se muestra el resto del formulario. Si elijo no, se esconde
  14.         <td></td>
  15.     </tr>
  16. .
  17. .
  18. .//Lo que viene aquí se inserta si todo lo demás es correcto y se pasa al siguiente formulario
  19.         <tr>
  20.             <th>Grupo de checkbox:</th>
  21.             <td><div id='grupo1'>";
  22.                 $conexion = conectar_intranet();
  23.                     $consulta = "Select...";
  24.                     $resultado = mysql_query($consulta, $conexion);
  25.                     mysql_close($conexion);
  26.                     while($fila = mysql_fetch_array($resultado))
  27.                         {
  28.                             echo utf8_encode("<input type='checkbox' name='datos[]'  value='$fila[0]' />$fila[1]<br/>");
  29.                         }
  30.             echo"</div></td>
  31.             <td><div id='grupo2'>";
  32.                 $conexion = conectar_intranet();
  33.                     $consulta = "Select ...";
  34.                     $resultado = mysql_query($consulta, $conexion);
  35.                     mysql_close($conexion);
  36.                     while($fila = mysql_fetch_array($resultado))
  37.                         {
  38.                             echo utf8_encode("<input type='checkbox' name='datos2[]' value='$fila[0]' />$fila[1]<br/>");
  39.                         }
  40.             echo"</div></td>
  41.         </tr>
  42.         <tr>
  43.         <th>primerSelect: </th>
  44.             <td style='width:40%'>
  45.                     <select name='nombreselect1' id='nombreselect1' value=''>";
  46.                         $conexion = conectar_intranet();
  47.                         $consulta = "Select...";
  48.                         $resultado = mysql_query($consulta, $conexion);
  49.                         while($fila = mysql_fetch_array($resultado))
  50.                         {
  51.                             echo utf8_encode("<option name='nombreselect1' value='$fila[0]'>$fila[1]</option>");
  52.                         }
  53. //Con lo siguiente inserto una serie de datos en la bd con xajax
  54.                     echo"</select>
  55.                 </td>
  56.                 <input type='hidden' name='dato2' value='$dato2' />
  57.                 <td rowspan='2' style='text-align:left'> <img src='images/add.png' onclick='xajax_insertaDatos(document.formu.dato2.value, document.formu.nombreselect1.value, document.formu.nombreselect2.value)' style='cursor:pointer'><div id='respuesta ></div> </td>
  58.             </tr>
  59.             <tr>
  60.                 <th>segundo select: </th>
  61.                 <td style='width:40%'>
  62.                     <select name='nombreselect2' id='nombreselect2' value=''>";
  63.                         $conexion = conectar_intranet();
  64.                         $consulta = "Select...";
  65.                         $resultado = mysql_query($consulta, $conexion);
  66.                         mysql_close($conexion);
  67.                         while($fila = mysql_fetch_row($resultado))
  68.                         {
  69.                             echo utf8_encode("<option name='nombreselect1' value='$fila[0]'>$fila[1]</option>");
  70.                         }
  71.                     echo"</select>             
  72.                 </td>
  73.             </tr>
  74.         </tbody>
  75. //ahora muestro el botón de submit
  76.         <tfoot>
  77.             <tr>
  78.                     <td ><input type='image' src='images/next.png' name='nextformu' value='nextformu' /></td>
  79.                     <td colspan = '2'><div id='errorform' class='divrojo' style='color:red'></div></td>
  80.             </tr>
  81.         </tfoot>
  82.         </form>
  83.             </table>
  84.         </div>";
  85. }

onSubmit='return xajax_compruebaInserciones(document.formu.dato2.va lue, document.formu.radiodato.value); javascript: return validaForm(this) '
Sería posible hacer esto??

Gracias!!
  #7 (permalink)  
Antiguo 14/05/2010, 10:30
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Yo te doy dos opciones:
Una es que metas los datos ya validos en variables de session o cookies, por lo que tendrias que estudiarle un poco y en un futuro eso te facilitaria las cosas en todos tus proyectos

Declarar variables de session es algo facil, te doy un ejemplo
Código PHP:
<?PHP
session_start
();

if (!isset(
$_SESSION['VSinicio])){
    $_SESSION['
VScampo_1'] = "";
    $_SESSION['
VScampo_1'] = "";
    $_SESSION['
VScampo_1'] = "";
        .
        .
        .
    $_SESSION['
VScampos]    = array(array());
        
etc
}else{

}
?>
Eso lo colocas al principio de la pagina php, cuando necesites usar una de ellas es lo mismo que usaras las variables normales

Código PHP:
$_SESSION['VScampos'][0]['campo 1'] = "Este es el contenido del campo 1";
$_SESSION['VScampo_1'] = "Este es el contenido del campo 1"
ya en la otra pagina a la direcciones haces

Código PHP:
session_start(); 
y puedes usar tus variables de session...

la otra opcion es que añadas lo siguiente a la funcion Xajax dentro del condicional una vez que los campos sean validos:

Código PHP:
$objResponse->script('alert("Los campos son validos")');
$objResponse->script('document.forms[0].action="Destino.php";');
$objResponse->script('document.forms[0].method="post";');
$objResponse->script('document.forms[0].submit();'); 
Lo cual quiere decir que puedes usar cualquier script dentro de una funcion xajax.
Yo estoy usando el Xajax V5 o la ultima que salio, por lo que no puedo hacer una prueba; si vez que no te funciona solo tendrias que buscar el equivalente a la palabra "scrip" dependiendo de la version que en tu caso seria "addScript" o algo por el estilo...

Me gustaria mucho que aplicaras una de las dos opciones y publicaras un comentario sobre la solucion...

Última edición por Maverick_cold45; 14/05/2010 a las 10:36
  #8 (permalink)  
Antiguo 15/05/2010, 15:36
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Ayuda con XAJAX, como pasar el formulario a otra pagina, para procesarlo

Gracias Maverick.
Pero no se si es que io no me he explicado bien, si tu no has entendido realmente lo que quería o si no estoy entendiendo tu respuesta.
De todas formas lo vuelvo a repetir:
Mi formulario se compone de 2 partes; un form normal que valida los campos con javascript y al darle a un botón ieva a otro form si se realiza la inserción. Si no se realiza muestra un mensaje de error sin volver a mostrar el formulario(se recarga la página).
Luego la otra parte está hecha con xajax y consiste en 2 select que van insertando datos en referencia al registro que se va a insertar con el formulario(por ejemplo, un cliente que compra varios artículos).
El formulario me lo valida bien, pero el botón de pasar al siguiente form no es el mismo botón que hace las inserciones de xajax.
Lo que io pretendo es que, a parte de validar el formulario con javascript, me valide que se ha insertado algún otro registro en la tabla de inserciones xajax y, si no es así, no deje de mostrar el formulario, sino que en un div especial muestre un mensaje de error al intentar pasar con el otro botón. Y eso con php no puedo hacerlo.

He probado lo de las sesiones. Ya tenía iniciada la sesión desde que creé la página(que por cierto, esta la estoy haciendo bajo joomla pero a base de wrapper), y lo hace bien(inicializo la variable si se hace al menos una inserción en la función iamada con xajax), pero claro, luego desde php puedo poner:
Código PHP:

if(isset($_SESSION['misesion']))
pasaAlSiguienteForm($dato1, $dato2);
else
{
?>
<script languaje='javascript'>muestraMensajitoError();</script>
<?
}
En la función muestraMensajitoError() le digo que coja el div que tengo para los errores y me muestre la frase que quiero con un innerHTML, pero la página ia se ha recargado, así que primero debería guardar todas las variables que introdujeron en sesiones y volver a decirle que muestre el formulario con esas variables para que encuentre el div donde poner el mensaje. Vamos, una locura.

La otra opción que me has dado no sé cómo aplicarla, no la veo si no es poniéndole en el onSubmit del formulario que se redirija a otra función php con xajax y que esta, a su vez, valide el form con javascript y compruebe que se ha insertado con la otra función xajax... Lo he intentado, pero cuando le pongo el xajax en el onsubmit no me hace nada, ni me da error ni nada de nada.

Existe otra solución para esto?? seguiré googleando de todas formas a ver si encuentro algo.

Gracias otra vez.

Al final lo he logrado resolver, pero de una forma muy rudimentaria y, aunque por ahora se va aquedar así, me gustaría encontrar otra solución más orientada a una consulta a la base de datos
Te comento. Resulta que cuando se insertan registros, con la salida de la función de xajax, éstos se muestran en un div que está vacío al inicio.
Entonces desde la función javascript con la que valido el formulario he puesto que si ese div está vacío me muestre el mensaje de error y no me deje continuar. Pero sigo sin ver que esa sea la solución porque, y si por x no se imprime nada aunque se haga la inserción correctamente?
Un saludo

Última edición por aniMAYtions; 15/05/2010 a las 16:31 Razón: sigo probando

Etiquetas: ajax, pasar, xajax, formulario
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:32.