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

xajax no me imprime la respuesta

Estas en el tema de xajax no me imprime la respuesta en el foro de Frameworks JS en Foros del Web. Hola amig@s!! En el sitio web que estoy construiendo he necesitado de la aiuda de la librería xajax para hacer inserciones en la base de ...
  #1 (permalink)  
Antiguo 08/04/2010, 00:54
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
xajax no me imprime la respuesta

Hola amig@s!!

En el sitio web que estoy construiendo he necesitado de la aiuda de la librería xajax para hacer inserciones en la base de datos sin recargar la página que contiene el formulario desde el que opero.
La inserción me la hace correctamente, pero luego la función addAssign no me imprime el texto que le asigno.
Os muestro un poco el código por partes a ver si encontrais el faio.

En el Index.php
Código PHP:
require ('includes/xajax/xajax_core/xajax.inc.php'); 
$xajax = new xajax();
$xajax->registerFunction("insertaDatos");
$xajax->processRequest(); 
Luego, desde el index se iama a la función, localizada en la página funciones.php, que carga el formulario
Código PHP:
<form name='formDatos' action='Index.php' method='post'>
<
table>
<
tr>
<
th>Nombre:</th>
<
td><input type='text' name='nom' value='' /></td>
<
td><div id='respuesta'>&nbsp;</div></td>
<
td><img src='images/add.png' onclick='xajax_insertaDatos(document.formDatos.nombre.value)'></td>
</
tr>
</
table>
</
form
Luego, en esa misma página tengo la función insertaDatos()
Código PHP:
function insertaDatos($usuario)
{
    
$conexion conectar();
    
$consulta "Insert Into usuarios Values('$usuario')";
    if(
mysql_query($consulta$conexion))
        
$salida "Registro insertado correctamente";
    else
        
$salida "No se insert&oacute; el registro";
    
mysql_close($conexion);
    
$respuesta = new xajaxResponse();
    
$respuesta->addAssign("respuesta","innerHTML","adios");
    return(
$respuesta);

En el head puse la referencia al directorio de la librería
Código PHP:
<?php
    $xajax
->printJavascript("includes/xajax/");
?>
Y por último, también en el head, hice la primera iamada a la función para inicializarla
Código Javascript:
Ver original
  1. xajax_insertaDatos(document.formDatos.nombre.value);

Pero como os decía, en el div id='respuesta' no me imprime el resultado de la acción de la función. Es más, si le pongo un texto ahí a huevo tampoco me lo imprime.
Podeis decirme por qué?? Gracias
  #2 (permalink)  
Antiguo 16/04/2010, 02:57
 
Fecha de Ingreso: abril-2010
Mensajes: 9
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: xajax no me imprime la respuesta

Cambia todos los addAssign por Assingn porque los addAssign ya han quedado obsoletos.
  #3 (permalink)  
Antiguo 16/04/2010, 07:26
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta

Si, debes cambiar el addAsign por assign y el return hazlo sin los parentesis, solo return $respuesta; esta dentro de los estandares de programacion y tu te sales colocandole parentesis.

Saludos
  #4 (permalink)  
Antiguo 30/04/2010, 03:22
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta

Hola de nuevo amig@s.

Probé lo que me dijisteis, pero aparte de no imprimirme ninguna respuesta es que ha dejado de funcionar. Ya nisiquiera me inserta los datos que pretendo en la BD. Es más, creo que ni iega a la función que le tengo vinculada.

Os recuerdo el código:
Código PHP:

//En el index, antes de imprimir ningún caracter html:
require ('includes/xajax/xajax_core/xajax.inc.php'); 
$xajax = new xajax();
$xajax->registerFunction("insertaDatos");
$xajax->processRequest();

//En el head:
$xajax->printJavascript("includes/xajax/"); 
Código Javascript:
Ver original
  1. /*En el head también:*/
  2. xajax_insertaDatos(document.formulario.dato1.value, document.formulario.dato2.value, document.formulario.dato3.value);

Código PHP:

//La iamada a la función desde el botón:
<img src='images/add.png' onclick='xajax_insertaDatos(document.formulario.dato1.value, document.formulario.dato2.value, document.formulario.dato3.value)'>

//Y por último, la función a la que se iama:
function insertaDatos($d1$d2$d3)
{
    
    
$conexion conectar();
    
$consulta "Insert Into tabla Values('$d1', '$d2', '$d3')";
    if(
mysql_query($consulta$conexion))
        
$salida "Registro insertado correctamente";
    else
        
$salida "No se insert&oacute; el registro";
    
mysql_close($conexion);
    
$respuesta = new xajaxResponse();
    
$respuesta->Assign("respuesta","innerHTML","$salida");
    return 
$respuesta;

Es más, si pongo como me dijisteis el assign en lugar del addAssign se me queda como colgado(con el puntero en el reloj de arena) y de ahí no sale, sigue sin insertar y sin mostrarme nada

Creo que el código es correcto y no se me ha pasado nada, pero ahora, por una extraña razón, los registros que antes se insertaban no se insertan.

Sabeis en qué estoy faiando??
Gracias y Saludos!!

Última edición por aniMAYtions; 30/04/2010 a las 03:32 Razón: se me olvidó un detaie
  #5 (permalink)  
Antiguo 04/05/2010, 05:23
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta

Cita:
Iniciado por aniMAYtions Ver Mensaje
Es más, si pongo como me dijisteis el assign en lugar del addAssign se me queda como colgado(con el puntero en el reloj de arena) y de ahí no sale, sigue sin insertar y sin mostrarme nada
Finalmente me di cuenta de que tenía un input hidden repetido en el formulario y por eso no me insertaba los registros. Esto ia sí lo hace.

Lo que ocurre es que me sige pasando lo mismo con el assign. El registro me lo inserta de igual forma, pero en la web se ve el puntero en modo reloj y así se queda rato y rato sin imprimirme nada...

Alguien sabe por qué puede estar pasando esto??

Un saludo.
  #6 (permalink)  
Antiguo 06/05/2010, 03:44
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta

bueno chic@s, aún sigo revisando el código en busca de una soluciín para el problema y en la consola de errores del firefox me he dado cuenta de que aparecen 2 errores al pulsar el botón para hacer la inserción por medio de xajax.
Estas son:

1.Declaracion del texto o XML en un lugar distinto del principio de la entidad.Según he visto en otro post del foro esto podría deberse a algún espacio por ahí. Pero yo no tengo ninguna declaración de xml y en los tutoriales que he leído de xajax ni la menciona.
Mi código es el siguiente en el Index
Código HTML:
Ver original
  1. <?php
  2. session_start();
  3. $tecnico = $_REQUEST['usu'];
  4.  
  5. if($tecnico == '')
  6.     {
  7.         JError::raiseError(1,'No puede acceder a esta página sin estar logueado en el sistema.');
  8.     }
  9. include('funciones_intranet.php');
  10. require ('includes/xajax_0.5_compiled/xajax_core/xajaxAIO.inc.php');
  11. $xajax = new xajax();
  12. $xajax->registerFunction("insertaDatos");
  13. $xajax->processRequest();
  14. ?>
  15.  
  16. <?php
  17.     $xajax->printJavascript("includes/xajax_0.5_compiled/");
  18. ?>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  20. <link rel="stylesheet" type="text/css" href="estilos_registro.css">
  21. <script type="text/javascript" src="funciones.js"></script>

Ya después de eso hay más funciones de javascript y empieza el body...

2. uncaught exception: [object Object]. Que no puede capturar la excepcion??

A ver si encontramos pronto algo que este tema me urge mucho.

Gracias!!
  #7 (permalink)  
Antiguo 08/05/2010, 16:27
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta

Otra vez vuelvo a este post para seguir contandoos avances.

Estoy aprendiendo a usar firebug(sabía algo de visual studio, así que no creo que me resulte muy difícil) y encontré el problema.
Cambiando la declaración de
Código PHP:

<?php
session_start
();
$tecnico $_REQUEST['usu'];
 
if(
$tecnico == '')
    {
        
JError::raiseError(1,'No puede acceder a esta página sin estar logueado en el sistema.');
    }
include(
'funciones_intranet.php');
require (
'includes/xajax_0.5_compiled/xajax_core/xajaxAIO.inc.php');
$xajax = new xajax();
$xajax->registerFunction("insertaDatos");
$xajax->processRequest();
?>
a

Código PHP:

<?php
require ('includes/xajax_0.5_compiled/xajax_core/xajaxAIO.inc.php'); 
$xajax = new xajax();
$xajax->setCharEncoding('utf-8');
$xajax->registerFunction("insertaDatos");
$xajax->processRequest();

session_start();
$tecnico $_REQUEST['usu'];

if(
$tecnico == '')
    {
           
JError::raiseError(1,'No puede acceder a esta página sin estar logueado en el sistema.');
    }
include(
'funciones_intranet.php');

?>
y ia no me da ese maldito error.

La cosa es que ahora, además de no insertarme los registros me da otro error

Código HTML:
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'insertaDatos' was given in /var/www/default/wrapperpags/includes/xajax_0.5_compiled/xajax_core/xajaxAIO.inc.php  on line 1077
Este ia parece algo más simple, pero he buscado información en internet, he probado lo que dice yno me ha hecho nada.
Intentaré debugearlo a ver que tal, pero si se os ocurre algo por favor, decídmelo que estoy un tanto desesperada con el tema.

Muchas gracias y saludos!!
  #8 (permalink)  
Antiguo 10/05/2010, 00:56
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta "adecuada"

Finalmente he conseguido que me muestre el texto "Registro insertado correctamente".

Para eso he puesto la iamada a axaj.inc.php dentro de la página de funciones, al comienzo de la misma, y la iamada desde el index a esa página también al comienzo del index.
En el index solo he dejado el print javascript en el head. Luego he creado la nueva instancia de ajax, registrado y procesado la función debajo de la misma, en la página de funciones.

Hasta ahí todo maravilloso. El problema ahora surge cuando lo quiero no es mostrar la frase "Registro insertado correctamente", sino ir mostrando lo que he insertado con cada nueva inserción, sacando estos valores de la base de datos

Código PHP:

function insertaDatos($d1$d2$d3)
{
    
$respuesta = new xajaxResponse();
    
$conexion conectar_intranet();
    
$consulta "Insert Into tabla Values('$d1', '$d2', '$d3')";
    
$result mysql_query($consulta$conexion) or die("Error de conexi&oacute;n a la Base de Datos");
    if(
$result)
    {
        
$consulta "Select otro_dato From otra tabla ot, tabla_en_la_que_inserto ti where ot.d2 = ti.d2 and campo = 'd1'";
        
$resultado mysql_query($consulta$conexion);
        
$comienzo "<ul>";
        while(
$fila mysql_fetch_row($resultado))
        {
            
$salida .= "<li>$fila[0]</li>";
        }
        
$fin "</ul>";
        
$salida $comienzo.$salida.$fin;
    }
    else
        
$salida "No se insert&oacute; el registro";
    
mysql_close($conexion);
    
    
$respuesta->assign("respuesta","innerHTML",$salida);
    return 
$respuesta;

La primera vez que inserto un registro me lo muestra bien, pero la segunda me da el error de mal formado y uncaught exception[object: Object].

Veis algo incorrecto? O cómo podría ver lo que contiene la variable salida con el pluggin de php de firebug??(todavía sigo explorando esta herramienta).

Bueno, sigo probando y probando y a veces me funciona correctamente.
Leí por ahí que el error de formato lo podía dar por el or die de mysql_query(xml no acepta errores). Se lo quité y volvió a funcionar.

Ahora refresco la página y deja de funcionarme otra vez... esto es una locura...

Un saludo.

Última edición por aniMAYtions; 10/05/2010 a las 04:25 Razón: y sigue cambiando
  #9 (permalink)  
Antiguo 10/05/2010, 05:26
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: xajax no me imprime la respuesta

Bueno, ia dejo de editar el mismo post y os comento los últimos cambios realizados.

Al final la iamada al xajax.inc.php la he hecho en el index y la instanciación del objeto xajax la he puesto al principio del todo de la página de funciones para no tener que repetirlo en cada registro de funcion.

Observando el curso del evento con más detenimiento me he dado cuenta de que estaba haciendo la misma operacion una y otra vez. Además de ver que en el xml que devolvía al pulsar el botón había un caracter extraño.
Sí, el que muestra firefox cuando no pones el echo utf8_encode. El de los acentos.
Y claro, io todo el rato metía bien el primer registro del select y lo intentaba después con el segundo registro, que tiene un acento.
Cuando no inserto el segundo registro, sino el tercero o el cuarto, que no ievan acentos, me lo hace correctamente.

Sabias alguna forma de xml traduzca los acentos? Lo he probado con $xajax->setCharEncoding('utf-8'); despues de crear el objeto xajax pero no va...

Gracias y un saludo!!
  #10 (permalink)  
Antiguo 14/05/2010, 12:14
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: xajax no me imprime la respuesta

Ejemplo/parte 1

Código PHP:
<?PHP            
session_start
();
//require_once("../Funciones/FnPHP/FnPHP_Otros.php");
if (!isset($_SESSION['VStemas'])){
    
$_SESSION['VStemas']    = array(array());
    
$_SESSION['VStemas']     = array(array());
    
$_SESSION['VSposT']     = -1;
    
$_SESSION['VSmodo']     = 0;
    
$_SESSION['VStemasE']     = array(array());
    
}else{
}
//PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php 
//PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php 
//PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php 
//PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php 
//PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php //PHPTemas.php 
//-----    FnPHP_Temas_CrearFisico1
//-----    FnPHP_Temas_CSS
//-----    FnPHP_Temas_Eliminar1
//----- FnPHP_Temas_EliminarP
//-----    FnPHP_Temas_EliminarR
//----- FnPHP_Temas_EliminarV
//----- FnPHP_Temas_esOK
//----- FnPHP_Temas_Guardar
//-----    FnPHP_Temas_Intercambiar2
//-----    FnPHP_Temas_Margen
//-----    FnPHP_Temas_Nuevo1
//-----    FnPHP_Temas_SumarLista
//-----    FnPHP_Temas_ULLI
function FnPHP_Temas_CrearFisico1($margen$Id_tema$nombre$pagina$indice$i$check){
    
$cadena ='
    <table border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td width="20">
            <input id="opt_'
.$i.'" name="opt_'.$i.'" type="checkbox" value="'.$i.'" onclick="xajax_FnXAJAX_VSposT_Cambiar('.$i.');" ';
        if (
$check==1){
            
$cadena .='checked="checked" />';
        }else{
            
$cadena .='/>';
        }
    
$cadena .='
            </td>
            <td width="80"><input id="txt_Indice_'
.$i.'" name="txt_Indice_'.$i.'" type="text" value="'.$indice.'" size="15" /></td>
            <td nowrap="nowrap"><span id="span_Margen_'
.$i.'" class="Margen_01">'.FnPHP_Temas_Margen($margen).'</span></td>
            <td width="800"><div id="div_Titulo_'
.$i.'" align="justify" class="'.FnPHP_Temas_CSS($margen).'">'.$nombre.'</div></td>
        </tr>
    </table>'
;    
    return 
$cadena;
}

function 
FnPHP_Temas_CSS($N){
    
$cadena "Titulo_0";    
    if (
$N 7){
        
$cadena .= $N;
    }else{
    
$cadena "Titulo_06";    
    } 
    return 
$cadena;
}

function 
FnPHP_Temas_Eliminar1($lista$POS){
    
$N      FnPHP_Lista_Tam($lista);
    
$TAM FnPHP_Lista_Tam($_SESSION['VStemasE']);
    
$result = array(array());
    
$result FnPHP_Temas_SumarLista($result0$lista0$POS-1);
    if(
$lista[$POS]["Id_tema"] <> ""){
        
$_SESSION['VStemasE'][$TAM]["Id_tema"] = $lista[$POS]["Id_tema"];
    }
    
$result FnPHP_Temas_SumarLista($result$POS$lista$POS+1$N-1);
    return 
$result;
}

function 
FnPHP_Temas_Intercambiar2($result$POSa$POSb){
    
$N $TAM;
    
$temp = array(array());
    
$temp[0] = $result[$POSa];
    
$result[$POSa] = $result[$POSb];
    
$result[$POSb] = $temp[0];
    
$result[$POSa]["numero"] = $POSb;
    
$result[$POSb]["numero"] = $POSa;
    return 
$result;
}

function 
FnPHP_Temas_Margen($N){
    
$cadena "";    
    for(
$i=1$i<$N$i++){
        
$cadena .="---+";
    }    
    return 
$cadena;
}

function 
FnPHP_Temas_Nuevo1($lista$POS){
    
$N FnPHP_Lista_Tam($lista); 
    
$result = array(array());
    
$result FnPHP_Temas_SumarLista($result0$lista0$POS);
    
$result[$POS+1]["margen"]     = "1";
    
$result[$POS+1]["Id_tema"]     = "";
    
$result[$POS+1]["Id_curso"]    = $_SESSION['VScurso'];    
    
$result[$POS+1]["nombre"]     = "";
    
$result[$POS+1]["pagina"]     = "";
    
$result[$POS+1]["indice"]     = "";
    
$result[$POS+1]["numero"]     = $POS+1;        
    
$result FnPHP_Temas_SumarLista($result$POS+2$lista$POS+1$N-1);
    return 
$result;
}

function 
FnPHP_Temas_SumarLista($result$TAM$lista$ini$fin){
    
$N $TAM;
    if (
$ini>$fin){
    }else{
        for(
$i=0$i <= $fin-$ini$i++){
                
$result[$i+$N]["margen"]     = $lista[$i+$ini]["margen"];        
                
$result[$i+$N]["Id_tema"]    = $lista[$i+$ini]["Id_tema"];
                
$result[$i+$N]["Id_curso"]    = $_SESSION['VScurso'];                    
                
$result[$i+$N]["nombre"]     = $lista[$i+$ini]["nombre"];
                
$result[$i+$N]["pagina"]     = $lista[$i+$ini]["pagina"];
                
$result[$i+$N]["indice"]     = $lista[$i+$ini]["indice"];
                
$result[$i+$N]["numero"]     = $i+$N;
        }
    }
    return 
$result;
}
//echo FnPHP_Numeracion_Tam("1.1")."<br>";
//echo FnPHP_Numeracion_Siguiente("1.1.1", FnPHP_Numeracion_CrearL(3));





//PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP 
//PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP 
//PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP 
//PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP 
//PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP //PHPOtros.PHP 
//-----    FnPHP_Numeracion_Cortar
//-----    FnPHP_Numeracion_CrearL
//-----    FnPHP_Numeracion_CrearN
//----- FnPHP_File_Ext
//----- FnPHP_File_Name
//-----    FnPHP_Numeracion_MayMen
//-----    FnPHP_Numeracion_POS
//-----    FnPHP_Numeracion_Siguiente
//-----    FnPHP_Numeracion_Tam
//-----    FnPHP_Numeracion_Ultimo
//-----    FnPHP_Lista_InsertSort
//----- FnPHP_Union_TemasEvaluaciones 
//----- esValido

function FnPHP_Numeracion_Cortar($indice$TAM){
    
$result explode('.'$indice);
    if ( 
$TAM <= count($result) ){
        
$result array_slice($result0$TAM);
    }
    
$result FnPHP_Numeracion_CrearN($result);
    return 
$result;
}

function 
FnPHP_Numeracion_CrearL($N){
    
$result "";
    for(
$i=0$i<$N$i++){
        if(
$i==0){ $result "1"; }else{ $result $result."."."1"; }
    }
    return 
$result;
}

function 
FnPHP_Numeracion_CrearN($lista){
    
$N count($lista);
    
$result "";
    for(
$i=0$i<$N$i++){
        if(
$i==0){ $result $lista[$i]; }else{ $result $result.".".$lista[$i];}
    }
    return 
$result;
}

function 
FnPHP_File_Name($filename){
    
$path_parts pathinfo($filename);
    
$result $path_parts['basename'];
    
$ext     FnPHP_File_Ext($filename);
    
$result str_replace('.'.$ext''$result);
    return 
$result;
}

function 
FnPHP_File_Ext($filename){
    
$path_parts pathinfo($filename);
    
$result     $path_parts['extension'];
    return 
$result;
}

function 
FnPHP_Numeracion_MayMen($cadenaA$cadenaB$i){
    if (
$cadenaA=="" and $cadenaB==""){
        
$result 0;
    }elseif (
$cadenaA=="" and $cadenaB<>""){
        
$result = -1;
    }elseif (
$cadenaB=="" and $cadenaA<>""){
        
$result 1;
    }else{
        
$A explode('.'$cadenaA);
        
$B explode('.'$cadenaB);
        
$a $A[$i];
        
$b $B[$i];    
        if(
$cadenaA."X" == $cadenaB."X"){
            
$result 0;
        }else{                
            if (
$a == $b){
                if        (( 
count($A) == $i+) and ( count($B) > count($A) )){    
                    
$result = -1;                    
                }elseif (( 
count($B) == $i+) and ( count($A) > count($B) )){
                    
$result 1;                                    
                }elseif((
count($A)-$i) and (count($B)-$i) ){ 
                    
$result FnPHP_Numeracion_MayMen($cadenaA$cadenaB$i+1);
                }else{
                    
$result 0
                }
            }else if (
$a $b){         
                
$result 1;
            }else if (
$a $b){ 
                
$result = -1;
            }        
        }
    }
    return 
$result;
}

function 
FnPHP_Numeracion_POS($lista$indice){
    
$result = -1;
    
$N FnPHP_Lista_Tam ($lista);
    for(
$i=0$i<$N$i++){
        if (
$lista[$i]["indice"]."X" == $indice."X"){
            
$result $i;
        }
    }
    return 
$result;
}

function 
FnPHP_Numeracion_Siguiente($indiceA$indiceB){
    
$listaA explode("."$indiceA);
    
$listaB explode("."$indiceB);    
    
$M count($listaA);
    
$N count($listaB);
    
$cadena "";
    if (
$indiceA==""){
        
$cadena "1";
    }elseif ((
$M >= $N)){
        for(
$i=0$i<$N-1$i++){
            
$listaB[$i] = $listaA[$i];            
        }
        
$listaB[$i] = $listaA[$i]+1;
        
$cadena FnPHP_Numeracion_CrearN($listaB);
    }elseif (
$M+== $N){
        
$cadena FnPHP_Numeracion_CrearN($listaA);
        
$cadena $cadena.".1";
    }
    return 
$cadena;
}

function 
FnPHP_Numeracion_Tam($indice){
    
$lista explode("."$indice);
    return (
count($lista));
}

function 
FnPHP_Numeracion_Ultimo($lista$indice){
    
$may $indice;
    foreach(
$lista as $row){;
        
$indiceB FnPHP_Numeracion_Cortar$row["indice"], FnPHP_Numeracion_Tam$indice ) );
        if(
FnPHP_Numeracion_MayMen($indice$indiceB0) == 0){
            if(
FnPHP_Numeracion_MayMen($may$row["indice"], 0)== -1){
                
$may $row["indice"];
            }
        }
    }
    return 
$may;
}

function 
FnPHP_Lista_InsertSort($lista){
    
$TAM FnPHP_Lista_Tam($lista);
    
$temp = array(array());

    for(
$i=1$i<$TAM$i++){
        
$temp[0] = $lista[$i];
        for (
$j $i-1$j >= and ( FnPHP_Numeracion_MayMen$lista[$j]["indice"], $temp[0]["indice"], 0) == ); $j--) {
            
$lista[$j+1] = $lista[$j];
            
$lista[$j] = $temp[0];
        }
    }

    return 
$lista;
}

function 
FnPHP_Lista_Tam($lista){
    if(
count($lista[0]) == 0){
        
$result 0;
    }else{
        
$result count($lista); 
    } 
    return 
$result;
}

function 
FnPHP_Union_TemasEvaluaciones($listaA$listaB){
    
$tamA FnPHP_Lista_Tam($listaA);
    
$tamB FnPHP_Lista_Tam($listaB);
    
$result = array(array());
    
    for (
$i=0$i<$tamA$i++){
        
$result[$i] = $listaA[$i];
        
$result[$i]["Id_prueba"] = "";
        
$result[$i]["Id_tipoPrueba"]= "";        
    }
    
    for (
$i=0$i<$tamB$i++){
        
$result[$i $tamA] = $listaB[$i];
    }
    
    return 
FnPHP_Lista_InsertSort($result);
}

function 
esValido($cadena$opc){
    
$result 0;
    if(
$cadena <> ""){
        
$result 1;
    }
    return 
$result;
}

Última edición por Maverick_cold45; 11/06/2010 a las 10:10
  #11 (permalink)  
Antiguo 14/05/2010, 12:16
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: xajax no me imprime la respuesta

Ejemplo/parte 2
Código PHP:
require_once("../xajax0.5_E/xajax_core/xajax.inc.php");
$xajax = new xajax();
//XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php 
//XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php 
//XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php 
//XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php 
//XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php //XAJAXTemas.php 
$xajax->register(XAJAX_FUNCTION,'FnXAJAX_Temas_Editar1');
$xajax->register(XAJAX_FUNCTION,'FnXAJAX_Temas_Eliminar1');
$xajax->register(XAJAX_FUNCTION,'FnXAJAX_Temas_MostrarLista');
$xajax->register(XAJAX_FUNCTION,'FnXAJAX_Temas_Mover1');
$xajax->register(XAJAX_FUNCTION,'FnXAJAX_Temas_Nuevo1');
$xajax->register(XAJAX_FUNCTION,'FnXAJAX_VSposT_Cambiar');

function FnXAJAX_Temas_Editar1($form){
    $objResponse = new xajaxResponse();    
    $POS = $_SESSION['VSposT'];    
    //$form = xajax.getFormValues('form_MENU');
    //$pagina = htmlspecialchars($form['txt_pagina']);
    if ($POS>=0){
        $nombre = htmlspecialchars(trim($form['txt_nombre']));
        $pagina = htmlspecialchars(trim($form['txt_pagina']));    
        $_SESSION['VStemas'][$POS]["nombre"] = $nombre;
        $_SESSION['VStemas'][$POS]["pagina"] = $pagina;            
        $objResponse->assign('div_Titulo_'.$POS,'innerHTML', $nombre);
    }    
    return $objResponse;
}

function FnXAJAX_Temas_Eliminar1(){
    $objResponse = new xajaxResponse();
    $TAM = FnPHP_Lista_Tam($_SESSION['VStemas']);
    if ($_SESSION['VSposT'] <> -1){        
        $_SESSION['VStemas'] = FnPHP_Temas_Eliminar1($_SESSION['VStemas'], $_SESSION['VSposT']);
        if($_SESSION['VSposT'] == $TAM-1){
            $_SESSION['VSposT']--;
        }
        $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");            
    }
    return $objResponse;
}

function FnXAJAX_Temas_MostrarLista(){
    $objResponse = new xajaxResponse();    
    $N              = FnPHP_Lista_Tam($_SESSION['VStemas']);
    $POS          = $_SESSION['VSposT'];
    for ($i=0; $i<$N; $i++){
        $margen = $_SESSION['VStemas'][$i]["margen"];        
        $Id_tema= $_SESSION['VStemas'][$i]["Id_tema"];
        $nombre = $_SESSION['VStemas'][$i]["nombre"];
        $pagina = $_SESSION['VStemas'][$i]["pagina"];            
        $indice = $_SESSION['VStemas'][$i]["indice"];
        $numero = $i;            
        if (($i==$POS) and ($POS<>-1)){ 
            $newContent .='<div id="div_Fila_'.$i.'" name="div_Fila_'.$i.'" class="EstiloDIV_1">';
            $newContent .= FnPHP_Temas_CrearFisico1($margen, $Id_tema, $nombre, $pagina, $indice, $i, 1).'</div>';
        }else{
            $newContent .='<div id="div_Fila_'.$i.'" name="div_Fila_'.$i.'" class="EstiloDIV_0">';
            $newContent .= FnPHP_Temas_CrearFisico1($margen, $Id_tema, $nombre, $pagina, $indice, $i, 0).'</div>';    
        }
    }
    $objResponse->assign('div_MAIN' ,'innerHTML', $newContent);
    $objResponse->assign('txt_nombre','value', $_SESSION['VStemas'][$POS]["nombre"]);
    $objResponse->assign('txt_pagina','value', $_SESSION['VStemas'][$POS]["pagina"]);    
    return $objResponse;
}

function FnXAJAX_Temas_Mover1($DIR){
    $objResponse = new xajaxResponse();    
    $POS = $_SESSION['VSposT'];
    $TAM = FnPHP_Lista_Tam($_SESSION['VStemas']);    
    if ($POS>=0){
        $margen = $_SESSION['VStemas'][$POS]["margen"];
        switch($DIR){
              case "izq":
                   if ($margen > 1){
                $margen--;
                $_SESSION['VStemas'][$POS]["margen"] = $margen;
                $objResponse->assign('txt_Indice_'.$POS,'value', "");
                $objResponse->assign('span_Margen_'.$POS,'innerHTML', FnPHP_Temas_Margen($margen));
                $objResponse->assign('div_Titulo_'.$POS,'className', FnPHP_Temas_CSS($margen));                                
                }
            break;
               case "der":
                $margen++;
                $_SESSION['VStemas'][$POS]["margen"] = $margen;
                $objResponse->assign('txt_Indice_'.$POS,'value', "");                
                $objResponse->assign('span_Margen_'.$POS,'innerHTML', FnPHP_Temas_Margen($margen));
                $objResponse->assign('div_Titulo_'.$POS,'className', FnPHP_Temas_CSS($margen));                                
            break;
               case "arr":
                if($POS>0){
                $_SESSION['VStemas'] = FnPHP_Temas_Intercambiar2($_SESSION['VStemas'], $POS, $POS-1);
                $_SESSION['VSposT']--;    
                $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");    
                }
            break;
               case "aba":
                if($POS<$TAM-1){
                $_SESSION['VStemas'] = FnPHP_Temas_Intercambiar2($_SESSION['VStemas'], $POS, $POS+1);
                $_SESSION['VSposT']++;
                $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");    
                }
            break;
            default:
            break;
        } 
    }
    return $objResponse;
}

function FnXAJAX_Temas_Nuevo1(){
    $objResponse = new xajaxResponse();    
    $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");
    $TAM = FnPHP_Lista_Tam($_SESSION['VStemas']);
    if($_SESSION['VSmodo'] == 1){
        $objResponse->script("xajax_FnXAJAX_Temas_CrearDivsNull();");
        $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");
    }    
    if($_SESSION['VSposT'] == -1 and $TAM > 0){
        $_SESSION['VSposT'] = $TAM-1;
    }
    $_SESSION['VStemas'] = FnPHP_Temas_Nuevo1($_SESSION['VStemas'], $_SESSION['VSposT']);    
    $_SESSION['VSposT']++;
    $objResponse->assign('txt_nombre','value', "");
    $objResponse->assign('txt_pagina','value', "");
    $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");
    return $objResponse;
}

function FnXAJAX_VSposT_Cambiar($POS){
    $objResponse = new xajaxResponse();    
    if ($_SESSION['VSposT']<>$POS){
        $_SESSION['VSposT']=$POS;
    }else{
        $_SESSION['VSposT']=-1;
    }
    $objResponse->script("xajax_FnXAJAX_Temas_MostrarLista();");
    return $objResponse;    
}





$xajax->configure('responseQueueSize',10000);
$xajax->processRequest(); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Indices del curso</title>
<?PHP $xajax->printJavascript('../xajax0.5_E/'); ?>
<script type="text/javascript" src="../JS/DD/SimpleTreeMenu.js">
/***********************************************
* Simple Tree Menu- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
</script>
<link rel="stylesheet" type="text/css" href="../JS/DD/SimpleTreeMenu.css" />
<link rel="stylesheet" type="text/css" href="../CSS/CSS_000.css" />
<style type="text/css">
<!--
body {
    background:#000099
}

.Boton_00 {
}

.Titulo_01 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 20px;
    color: #000000;
}
.Titulo_02 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 18px;
    color: #000000;
}
.Titulo_03 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 16px;
    color: #000000;
}
.Titulo_04 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 14px;
    color: #000000;
}
.Titulo_05 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 12px;
    color: #000000;
}
.Titulo_06 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 10px;
    color: #000000;
}
.Menu_encabezado {
    font-size: 21px;
    font-weight: bold;
    color: #FF0000;
}

.Margen_01 {
    font-family: "Courier New", Courier, monospace;
    font-weight: bold;
    font-size: 10px;
    color: #000000;
}

.Opciones_01 {
    font-family: "Times New Roman", Times, serif; 
    font-weight: bold;     
    font-size: 14px; 
    color: #FFFFFF; 
}

.EstiloDIV_0 {
    background:#FFFFFF;
}
.EstiloDIV_1 {
    background:#CCCCCC;
}
.EstiloDIV_Menu {
    height:150px;
    overflow:auto;
    background:#FFFFFF;
}
.EstiloDIV_Main {
    height:500px;
    overflow:auto;
    background:#FFFFFF;
}
-->
</style>
</head>

Última edición por Maverick_cold45; 11/06/2010 a las 10:11
  #12 (permalink)  
Antiguo 14/05/2010, 12:17
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: xajax no me imprime la respuesta

Ejemplo/parte 3
Código PHP:
<body>
<form id="form_MENU" method="post" action="">    
<div id="div_MENU" align="center"  class="EstiloDIV_Menu">
<table border="2">
    <tr>
        <td width="120"><div align="left">Titulo:</div></td>
          <td width="500"><div align="left">
          <input name="txt_nombre" type="text" id="txt_nombre" value="" size="80" maxlength="255" onkeyup="xajax_FnXAJAX_Temas_Editar1(xajax.getFormValues('form_MENU'));"/>
          </div></td>
        <td width="100"><div align="left">
        <input type="button" name="cmd_Aceptar" id="cmd_Aceptar" value="Guardar" onclick="<?PHP echo "location.href='http://raziel2099.blogspot.com/'"?>"/>
        </div></td>
      </tr>
      <tr>
        <td width="120"><div align="left">Pagina HTML:</div></td>
             <td width="500"><div align="left">
        <input name="txt_pagina" type="text" id="txt_pagina" value="" size="80" maxlength="255" onkeyup="xajax_FnXAJAX_Temas_Editar1(xajax.getFormValues('form_MENU'));"/>
          </div></td>
        <td width="100"><div align="left">
        <input type="button" name="cmd_Cancelar" id="cmd_Cancelar" value="Cancelar"  onclick="<?PHP echo "location.href='http://raziel2099.blogspot.com/'"?>"/>
        </div></td>
      </tr>
      <tr>
        <td width="120"><div align="left">Indice:</div></td>
        <td width="500">&nbsp;</td>
        <td width="100">&nbsp;</td>
      </tr>
      <tr>
        <td width="120"><div align="left">Numero:</div></td>
        <td width="500">&nbsp;</td>
        <td width="100"><div align="left">
        <input type="button" name="cmd_VerNormal" id="cmd_VerNormal" value="Ver Normal" 
        onclick="<?PHP echo "location.href='http://raziel2099.blogspot.com/'"?>"/>
        </div></td>
      </tr>
      <tr>
        <td width="120">&nbsp;</td>
        <td width="500"><div align="left">
        <input type="button" name="cmd_Izq" id="cmd_Izq" value="&lt;" onclick="xajax_FnXAJAX_Temas_Mover1('izq');" />
        <input type="button" name="cmd_Der" id="cmd_Der" value="&gt;" onclick="xajax_FnXAJAX_Temas_Mover1('der');" />
        <input type="button" name="cmd_Men" id="cmd_Men" value="-"    onclick="xajax_FnXAJAX_Temas_Mover1('arr');" />
        <input type="button" name="cmd_Mas" id="cmd_Mas" value="+"    onclick="xajax_FnXAJAX_Temas_Mover1('aba');" />
        <input type="button" name="cmd_Nuevo" id="cmd_Nuevo" value="Nuevo" onclick="xajax_FnXAJAX_Temas_Nuevo1();"/>
        <input type="button" name="cmd_Eliminar" id="cmd_Eliminar" value="Eliminar" onclick="xajax_FnXAJAX_Temas_Eliminar1();"/>        
        </div></td>
           <td width="100"><div align="left">
        <input type="button" name="cmd_VerFinal" id="cmd_VerFinal" value="Ver Final"  
        onclick="<?PHP echo "location.href='http://raziel2099.blogspot.com/'"?>"/>
        </div></td>
      </tr>
</table>
</div>
</form>
<br>
<div id="div_MAIN" class="EstiloDIV_Main">
<?PHP
    
echo '<script>xajax_FnXAJAX_Temas_MostrarLista();</script>';
?>
</div>
</body>
</html>

Última edición por Maverick_cold45; 11/06/2010 a las 10:12
  #13 (permalink)  
Antiguo 14/05/2010, 12:39
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: xajax no me imprime la respuesta

Pues espero no haberme equivocado en nada, todo lo que tienes que hacer es juntarlo y guardarlo en un archivo php, y cambiarle las direcciones donde esta tu carpeta Xajax:
Código PHP:
require ('includes/xajax/xajax_core/xajax.inc.php'); 
<?PHP $xajax->printJavascript('../xajax0.5_E/'); ?>
estoy seguro que esto te podra resolver muchas dudas, por supuesto yo los tengo en diferentes archivos...

lo que si me di cuenta es que por ejemplo si yo creaba varios divs y luego a esos divs les aplicaba una funcion Xajax que les imprimiera algo, aveces los mostraba y haveces no, la unica solucion que encontre es solo mandar un $newContent por cada funcion Xajax cuando los div o objetos no estan previamente creados, en caso contrario si puedo mandar varias impresiones Xajax.

y hay tres cosas a considerar
  • El formato de la pagina. En mi caso es UTF-8 lo cual me ha ayudado a no tener que convertir los caracteres que devuelve Xajax o que le envio a una funcion Xajax
  • El formato de la base de datos. yo uso la codificacion UTF-8, lo cual igual me ayuda cuando le envio los datos y no tener que convertirlos, salvo los caracteres SQL, HTML especiales usando una funcion PHP para escapar esos caracteres
  • El formato en que vienen los caracteres de la base de datos. yo uso utf8_encode($row[0]); cuando asigno el valor a una variable en la pagina

Omiti todas las funciones para solicitar los datos de la base de datos y cuando inserto los datos.

Todo depende de la codificacion de la pagina y de la base de datos, tendrias que convertir los caracteres dependiendo de la codificacion, pero si vas a usar Xajax, lo mejor es que uses codidicacion UTF-8, la cual es la estandar en todos los navegadores.

Yo he probado mi aplicacion en IE, Firefox y Ghrome y no me ha dado ningun problema... Trata de usar los estandares web, o aquellos que se usan para todos los navegadores,, como la coficacion UTF-8.

Te menciono que yo no soy experto en aplicaciones web, mas bien en lenguajes de escritorio, pero el xajax me ha aportado mucho para lo que yo quiero hacer.

Tambien puedes consultar
http://www.cristalab.com/tips/configurar-tu-web-para-usar-utf-8-c42532l/

Última edición por Maverick_cold45; 14/05/2010 a las 13:37

Etiquetas: ajax, imprime, respuesta, 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 10:32.