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

no me funciona xajax

Estas en el tema de no me funciona xajax en el foro de Frameworks JS en Foros del Web. Hola, pongo este codigo que me bajé porque me produce el mismo resultado que un codigo que tengo y mi problema es que no me ...
  #1 (permalink)  
Antiguo 13/04/2010, 05:30
 
Fecha de Ingreso: abril-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
no me funciona xajax

Hola, pongo este codigo que me bajé porque me produce el mismo resultado que un codigo que tengo y mi problema es que no me funciona al dar al boton enviar del formulario. alguien sabe porque no funciona xajax??
este es el fichero.php:
Código:
<?
//incluímos la clase ajax
require ('../xajax/xajax_core/xajax.inc.php');

//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);


function procesar_formulario($form_entrada){
   //creo el xajaxResponse para generar una salida
$respuesta = new xajaxResponse();
$respuesta->setCharacterEncoding('ISO-8859-1');

   //validación
   $error_form = "";
   if ($form_entrada["nombre"] == "")
      $error_form = "Debes escribir tu nombre";
   elseif ($form_entrada["apellidos"] == "")
      $error_form = "Debes escribir tus apellidos";
   elseif (!isset($form_entrada["acepto"]))
      $error_form = "Debes aceptar los términos y condiciones";
      
   //compruebo resultado de la validación
   if ($error_form != ""){
      //Hubo un error en el formulario
      //en la capa donde se muestran mensajes, muestro el error
      $respuesta->Assign("mensaje","innerHTML","<span style='color:red;'>$error_form</span>");
   }else{
      //es que no hubo error en el formulario
      $salida = "Hemos procesado esto:<p>";
      $salida .= "Nombre: " . $form_entrada["nombre"];
      $salida .= "<br>Apellidos: " . $form_entrada["apellidos"];
      
      //mostramos en capa mensaje el texto que está todo correcto
      $respuesta->Assign("mensaje","innerHTML","<span style='color:blue;'>Todo correcto... Muchas gracias!</span>");
      //escribimos en la capa con id="capaformulario" el texto que aparece en $salida
      $respuesta->Assign("capaformulario","innerHTML",$salida);
      
      //tenemos que devolver la instanciación del objeto xajaxResponse
   }
   return $respuesta;
}
//registramos la función creada anteriormente al objeto xajax
$xajax->register(XAJAX_FUNCTION, 'procesar_formulario'); 

//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>
<html>
<head>

   <title>Enviar y procesar un formulario con Ajax y PHP</title>
   <?
   //En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
   $xajax->printJavascript("../xajax/");
   ?>
</head>

<body>
<h1>Recibir y procesar formulario con Ajax y PHP</h1>
<div id="mensaje">
Rellena los datos de este formulario y pulsa "Enviar"
</div>
<br />
<div id="capaformulario">
<form id="formulario">
Nombre: <input type="text" name="nombre" />
<br />
Apellidos: <input type="text" name="apellidos" />
<br />
<input type="checkbox" name="acepto" value="1" /> Acepto los términos y condiciones ;)
<br />
<input type="button" value="Enviar" onclick="xajax_procesar_formulario(xajax.getFormValues('formulario'))" />
</form>
</div>

</body>
</html>
a este fichero le llamo desde otro de la siguiente forma:
Código:
<a href=\"#\" onclick=\"AjaxUploadtoServer('insertar.php?'); return false;><input type='button' value= 'insertar' size='10'><br><br>
  #2 (permalink)  
Antiguo 16/04/2010, 07:40
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: no me funciona xajax

Hola teleko, ahi hay varias cosas:

1. Cuando hagas el Assign hazlo sin mayuscula, ya que el metodo original esta en minuscula.

2. Cuando hagas $xajax->register(XAJAX_FUNCTION, 'procesar_formulario'); solo haz:
$xajax->register('procesar_formulario');
nota: Te recomiendo que tus funciones empiezen en minuscula y separes las palabras con una mayuscula, por ejemplo procesarFormulario, esto esta dentro de los estandares.

3. Cuando hagas la llamada al metodo que necesites desde un boton o un onclick desde tu html, debes empezar la llamada con 'xajax_' y el nombre del método, para tu caso seria: onclick="xajax_procesar_formulario()" y para recojer los valores de tu formulario debes de colocarle un id a la etiqueta form de tu formulario, por ejemplo:

<form id="mi_form" name="formulario" method="post">
.... campos del formulario
</form>

entonces el metodo quedaria armado asi;

onclick="xajax_procesar_formulario(xjx.getFormValu es('mi_form'))"

lo que hace el xjx.getFormValues es recorrer todos los elementos de tipo formulario que esten dentro del id mi_form, recogerlos y enviarlos a la funcion en php.

ya en php te queda en la variable que tienes como $form_entrada que es un array asociativo cuyas llaves son los name de los campos de tu formulario y el valor es el que se escribio en el campo, y ahi ya los trabajas como te guste.

Espero te sirva, si tienes alguna otra duda posteas y miramos.
  #3 (permalink)  
Antiguo 18/04/2010, 11:52
 
Fecha de Ingreso: abril-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: no me funciona xajax

hola brayham, prové con los cambios que me dijiste pero seguia sin funcionarme. El poner $xajax->register('procesar_formulario'); me producia el siguiente warning:

Código:
Warning: Missing argument 2 for xajax::register(), called in C:\AppServ\www\PROYECTO\PFC_ABRIL\public_html\administrador\pruebaphp\prueba3.php on line 22 and defined in C:\AppServ\www\PROYECTO\PFC_ABRIL\public_html\administrador\pruebaphp\xajax\xajax_core\xajax.inc.php on line 347

Fatal error: Failed to locate registration method for the following: Array ( [0] => procesarFormulario ) in C:\AppServ\www\PROYECTO\PFC_ABRIL\public_html\administrador\pruebaphp\xajax\xajax_core\xajaxPluginManager.inc.php on line 301
  #4 (permalink)  
Antiguo 19/04/2010, 15:22
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: no me funciona xajax

Hola Teleko, si tienes razon, la funcion a la cual tenemos que hacer referencia es:

$xajax->registerFunction('tuFuncion');

Esto deberia de resolver el problema

Saludos

Etiquetas: ajax, xajax
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 11:57.