Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/12/2009, 13:07
Brahyam
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 10 meses
Puntos: 2
Respuesta: devolver varias respuestas en una funcion con xajax

Hola Atoleon,
El framework xajax es una maravilla con todo lo que hace para nosotros que programamos en PHP ya que solo tenemos que usar solo llamados xajax_myFuncion en javascript y hacer lo que sabemos hacer en PHP, por esta razon a xajax no le queda nada grande.

Ahora, para tu codigo, cuando instancias el xajaxResponse() solo debes de hacerlo una sola vez ya que no tiene sentido que lo hagas varias veces, puedes enviar multiples respuestas a tu html solo con hacer:

Código PHP:
 $respuesta = new xajaxResponse(); 
te doy un ejemplo:
Código PHP:
function procesar_formulario ($form_entrada) {
    
$cantidad $form_entrada["cantidad"];
    
$papel $form_entrada["papel"];
    
$cara_a $form_entrada["cara_a"];
    
$cara_b $form_entrada["cara_b"];        
    
$plast $form_entrada["plastificado"];
    
$formato $form_entrada["formato"];
    
    
//calcular el numero de pliegos
    
$n_pliegos $cantidad $formato;
    if (
$cara_b != 0) {
        
$n_impresiones $n_pliegos 2;
    }else {
        
$n_impresiones $n_pliegos;
    }
        
    
//Calcular costes
    
$conex conectar_bd ();
    
$cons "Select coste from papeles where id = '$papel'";
    
$result mysql_query ($cons$conex);
    
$aux_c_papel mysql_fetch_row ($result);
    
$c_papel $aux_c_papel [0];
    
$c_cara_a coste_toner ($cara_a);
    
$c_cara_b coste_toner ($cara_b);
    
$c_total $c_papel $c_cara_a $c_cara_b;
    
$c_total $c_total $n_pliegos;
    
    
//calcular incremento del beneficio
    
$cons "select beneficio from tramos_laser where '$n_impresiones' >= inicio and '$n_impresiones' <= final";
    
$result mysql_query ($cons$conex);
    
$aux_incremento mysql_fetch_row ($result);
    
$incremento $aux_incremento [0];
    
$pvp $c_total $incremento;
    
    
$pre_total $pvp//. ' - ' . $n_pliegos . ' - ' . $n_impresiones . ' -' . $c_papel . ' - ' . $c_cara_a . ' - ' . $c_cara_b . ' - ' . $incremento;
    
$pre_igic $pvp 1.05;
    
$pre_unit $pvp $cantidad;
    
    
//instanciar el objeto de respuesta de xajax
    
$respuesta = new xajaxResponse (); //<-- Solo debes de instanciar una sola vez la salida
   
    //escribimos en la capa con id="respuesta" el texto que aparece en $salida

    // y con este objeto $respuesta llamas el metodo de la salida, que en este caso serian metodos assign
    
$respuesta->assign("pre_total_div","innerHTML",$pre_total);
    
$respuesta->assign("pre_igic_div","innerHTML",$pre_igic);
    
$respuesta->assign("pre_unit_div","innerHTML",$pre_unit);
    
    return 
$respuesta;

De esta manera se cargará toda la informacion mandada en los divs o id que hayas declarado en $respuesta->assign.

Asi como hay assign, que es asignarle una respuesta a un id, tambien puedes llamar otros metodos que seguro te seran de utilidad, estos son los que mas utilizo:

Código PHP:
$respuesta->call("funcionJavascript('parametro')"); 
Con este metodo llamas una funcion javascript creada en tu documento html o en un archivo.js que hayas incluido en tu documento.

Código PHP:
$respuesta->script("document.getElementById('id').value = 123"); 
Con este metodo creas una sentencia javascript, con lo que quieras.

Código PHP:
$respuesta->alert("mensaje que quieras"); 
Con este metodo sacas un "alert" o mensajes de alerta con algo que quieras mostrar.

Tambien puedes sacar alerts con el resultado de un array, que personalmente me han facilitado la vida muchisimo, asi:

Código PHP:
$respuesta->alert(print_r($tu_array,true)); 
Tambien puedes combinar todo si quieres asi:

Código PHP:
$respuesta->call("mostrarDiv('mi_div')");
$respuesta->script("document.getElementById('mi_div').style.border = '1px #000 solid'");
$respuesta->assign('mi_div',innerHTML,$dato);
$respuesta->alert("El dato ha salido con exito.");
return 
$respuesta
No olvides retornar siempre el objeto de la respuesta para que te muestre la informacion:

Código PHP:
return $respuesta
Como puedes ver, puedes hacer lo que quieras con este Framework creado para facilitar la vida a aquellos que lo posean jeje !!!