Cita:
Iniciado por maycolalvarez personalmente tuve muy malas experiencias con xajax y en general prefiero y recomiendo utilizar un FW backend MVC e implementar jQuery, ExtJS etc.
Los Fw que mencionas tengo entendido que están fuertemente orientados a Javascript, de lo que deduzco que tú lo usas mucho, de ser así no me extraña que xajax no te convenciera, pues xajax se mete muy poco con js...
Gracias por tu comentario.
En este post mostraré cómo pasar parámetros a nuestras funciones php llamadas vía ajax.
Los tipos de datos que podemos pasar como parámetros a nuestras funciones con xajax, son básicamente los mismos que podemos pasar en cualquier llamada javascript
:
Números, cadenas, operaciones y valores de objetos de nuestro html. Además, xajax permite fácilmente enviar todo un formulario a nuestras funciónes.
Veamos el siguiente código:
Código PHP:
Ver original<?php
@require_once("xajax/xajax_core/xajax.inc.php");//la arroba es para anular la notificacion de uso de instrucciones obsoletas
$xajax = new xajax();//Creamos un objeto xajax
//$xajax->configure("debug", true);//si queremos hacer un debug, descomentamos esta linea
$xajax->register(XAJAX_FUNCTION,"mifuncion");//registramos nuestra función o funciones que llamaremos via ajax
$xajax->processRequest();//Indicamos que xajax procesará las peticiones ajax que registramos.
$xajax->configure('javascript URI','xajax');
echo"
<html>
<head>";
$xajax->printJavascript("xajax");//Imprimimos el código JS que inicia Xajax
echo"
</head>
<body>
<div id=\"mensaje\"></div>
<br/>
<form name=\"prueba\" id=\"prueba\">
<input type=\"text\" name=\"nombre\" id=\"nombre\" onblur=\"xajax_mifuncion(this.value,'nombre');\">
<select name=\"colores\" id=\"colores\" onchange=\"xajax_mifuncion(this.value,'color');\">
<option value=\"rojo\">rojo</option>
<option value=\"azul\">azul</option>
<option value=\"verde\">verde</option>
</select>
<input type=\"button\" value=\"Enviar datos\" onclick=\"xajax_mifuncion(xajax.getFormValues('prueba'));\"/>
</form>
<input type=\"button\" value=\"suma de 2 + 3\" onclick=\"xajax_mifuncion(2+3,'suma');\"/>
</body>
";
function mifuncion($valor,$origen=""){
$respuesta = new xajaxResponse();//Creamos una respuesta tipo xajax
if(!is_array($valor))//si no recibimos el formulario $respuesta->assign("mensaje","innerHTML","Usted indico el $origen $valor");//regresamos un mensaje de texto simple
else{
$respuesta->assign("mensaje","innerHTML","Usted indico los valores Nombre: $valor[nombre] y Color: $valor[colores]");//regresamos un mensaje de texto mas elaborado
}
return $respuesta;
}
?>
Es muy similar al anterior, sólo que ahora nuestro html inicial contiene lo siguiente:
- Un formulario con el id prueba
- Una caja de texto sencilla con el id nombre
- Un combo o select con el id colores y una lista de tres colores
- Un botón que envía nuestro formulario completo
- Un botón que llama nuestra función enviando una suma (2+3)
Como verás, es posible llamar nuestra función con cualquier evento existente en js.
Ahora bien, analizando el input:
el input al ser abandonado (
evento onblur) llama nuestra función pasándole como parámetro su propio valor (
this.value), lo mismo que ocurre con el select, al pasar su propio valor al cambiar de selección
(evento onchange).
El botón que envía todo el formulario lo hace mediante la instrucción
xajax.getFormValues, la cual permite enviar todo el contenido de un formulario como si de un submit se tratara.
Finalmente el último botón envia una operación (2+3).
Ahora veamos el código de nuestra función ajax:
function mifuncion($valor,$origen=""){
Aquí por si no lo sabías, estamos definiendo que nuestra función puede recibir dos parámetros ($valor y $origen), además, si no recibe nada dentro de la variable
$origen, le colocará una
cadena vacía.
if(!is_array($valor))
Cualquier parámetro que enviemos a nuestra función ajax será recibida dentro de una variable simple, a menos que enviemos un formulario, en tal caso, xajax nos enviará un
arreglo (array) muy similar por no decir idéntico a cualquier array que recibamos vía
$_POST, sólo que el array tendrá el nombre que le hayamos dado al declarar nuestra función. En nuestro caso, si enviamos el formulario, lo recibiremos en la variable
$valor, por esto primero comprobamos si $valor es un arreglo o no.
Si no es un arreglo, regresamos como respuesta en el div mensaje un mensajito muy simple, con el contenido de las dos variables recibidas ($valor y $origen).
Si es un arreglo, es que nos enviaron el formulario, es ese caso devolveremos un mensaje más elaborado, con los contenidos del formulario.
Finalmente, no habría ni que mencionar que con el botón de suma nuestra función recibe desde el principio el valor 5 (suma de 2+3) pues la operación ya estaba hecha por javascript.
Bien, es todo por el momento, cualquier duda por favor comentarla, en el siguiente post mostraré como regresar más de una respuesta en la misma función xajax.