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

devolver varias respuestas en una funcion con xajax

Estas en el tema de devolver varias respuestas en una funcion con xajax en el foro de Frameworks JS en Foros del Web. Hola Estoy creando una web donde hay un formulario que se procesa mediante ajax con el framework de xajax. He creado la función siguiendo un ...
  #1 (permalink)  
Antiguo 16/12/2009, 06:20
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
devolver varias respuestas en una funcion con xajax

Hola

Estoy creando una web donde hay un formulario que se procesa mediante ajax con el framework de xajax.
He creado la función siguiendo un tutorial. En el tuto explica como devolver un dato, bueno más bien explica como escribir el dato devuelto en alguna parte de la página. He tratado de hacerlo con un array pero no funciona.
inserto la función a ver si alguien puede ayudarme viendo el código.

Código PHP:
//funcion de calculo de presupuesto de la página con XAJAX
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_total = new xajaxResponse ();
    
$respuesta_igic = new xajaxResponse ();
    
$respuesta_unit = new xajaxResponse ();
    
//escribimos en la capa con id="respuesta" el texto que aparece en $salida
    
$respuesta_total->assign("pre_total_div","innerHTML",$pre_total);
    
$respuesta_igic->assign("pre_igic_div","innerHTML",$pre_igic);
    
$respuesta_unit->assign("pre_unit_div","innerHTML",$pre_unit);
    
    return 
$respuesta_total;

  #2 (permalink)  
Antiguo 16/12/2009, 17:23
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
De acuerdo Respuesta: devolver varias respuestas en una funcion con xajax

Hola esta cuestion de ajax es muy complicada hacerla a puro javascript por eso siempre recomiendo que utilicen Jquery.

aqui te dejo un link para que lo puedas estudiar aun que es sumamente facil:
jquery
te explico:

he aqui el codigo
Código HTML:
<script>
 $.get("prueba.php", { nombre: "John", hora: "2pm" },
   function(data){
     alert("datos de respuesta: " + data);
   });
</script> 
$.get es para GET y $.post es para enviar la info por POST.
{ nombre: "John", hora: "2pm" } son los parametros que se envian a prueba.php
ahora la respuesta la recives en la variable " data "
function(data){
alert("datos de respuesta: " + data);
y la imprimes en pantalla por un alerta.

para agregarlo por ejemplo a el div con id: jorge o el <div id="jorge"></div> haces esto
function(data){
$("div#jorge").html(data);
con esto colocas el resultado en el div.

para mas ayuda un breve ejemplo:
con jquery se llaman a los elementos siempre asi $("elemento#id.clase")

insisto para mas info ver la pagina: www.visualjquery.com
  #3 (permalink)  
Antiguo 17/12/2009, 13:07
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 9 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 !!!
  #4 (permalink)  
Antiguo 18/12/2009, 07:15
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: devolver varias respuestas en una funcion con xajax

Muchísimas muchísisisisimas gracias. Me has ayudado mucho Brahyam. La verdad es que a veces algo tan sencillo puede dar mucho la lata.
Gracias también a ti Enlinea777.
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 07:14.