Xajax y php

Hola, tengo una duda con respecto a un código que tomé del siguiente enlace http://developer.swekee.com/2008/09/04/utilizando-xajax-05-en-php/ y lo adapte para realizar consultas en una base de datos postgres
estos son los archivos:
index.php, contendrá la fachada y los controles de la página.
index.server.php, en este archivo se crean las funciones a utilizar
index.common.php, se encarga de registrar e invocar las funciones creadas en index.server.php.
Cuando cargo la página me muestra el combo con los valores de la base de datos, pero al seleccionar alguno debería mostrarme una tabla con el resultado de la consulta que especifico en index.server.php. Y no hace nada
Bueno el código del archivo index es:
<?php
require_once('index.common.php');
//Haciendo referencia a las funciones registradas y que serán interpretadas como funciones javascript
/********HACIENDO CONSULTA A LA TABLA Personal***********/
$db = pg_connect("host=127.0.0.1 dbname=SIIO user=postgres
password=abc123") or
die ("Fallo en el establecimiento de la conexión");
$result = pg_query ($db, "select codigo_actividad, descripcion from actividad")
or die("Error en la consulta SQL");
/*****************************************************/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo XAJAX</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php
//Indicamos al objeto xajax se encargue de generar el javascript de las funciones registradas por ejm: ListarCursosXCiclo
$xajax->printJavascript('xajax/');
?>
</head>
<body>
<form name="frmPrueba" id="frmPrueba" method="post">
 Actividad:
 <select name="cboCiclos" id="cboCiclos" onChange="xajax_ListarCursosXCiclo(this.value);">
  <option value="">--Seleccione--</option>
 <?php while($row=pg_fetch_array($result)){?>
  <option value="<?php echo $row['codigo_actividad']?>"><?php echo $row['codigo_actividad']?></option>
 <?php }?>
 </select>
 <!--DIV donde se mostrara la respuesta AJAX-->
<div id="divListado"></div>
</form>
</body>
</html>
el codigo del archivo index.server.php:
<?php
//importando nuestras las referencias XAJAX
require_once ("index.common.php");
//función que lista los Cursos segun el ciclo elegido
function ListarCursosXCiclo($codigo_actividad){
    $db = pg_connect("host=127.0.0.1 dbname=SIIO user=postgres password=abc123") or
    die ("Fallo en el establecimiento de la conexión");
    $objResponse = new xajaxResponse();
//instanciamos el objeto para la respuesta AJAX
//ISO-8859-1 significa que los caracteres latinos como la ñ y los acentos serán tomados en cuenta
//$sql=sprintf('select codigo_personal,descripcion,estado from personal where codigo_actividad=%d',$codigo_actividad);
    $sql=select codigo_personal,descripcion,estado from personal where codigo_actividad=$codigo_actividad;
    $rspersonal=pg_query ($db, $sql);
    $cantRegistros=pg_numrows($rspersonal);
    $tabla=''; //variable donde guardaremos la tabla HTML que luego se mostrara mediante AJAX
if($cantRegistros>0){ // Si existen registros entonces armamos la cabecera de la tabla
  $tabla='
<table width="50%" border="1">
<tr>
     <th scope="col">CODIGO PERSONAL</th>
     <th scope="col">DESCRIPCIÓN</th>
     <th scope="col">ESTADO</th>
</tr>
';
   while($row=pg_fetch_array($rspersonal,null, PGSQL_ASSOC)){ //recorriendo registro x registro y armando la tabla
   $tabla.='
<tr>
<td>'.$row['codigo_personal'].'</td>
<td>'.$row['descripcion'].'</td>
<td>'.$row['estado'].'</td>
</tr>
';
  }
  $tabla.='
</table>
';
  }
  //asignando el contenido de la varabiale $tabla al div que esta en index.php
  //innerHTML reemplaza el contenido HTML por otro
  $objResponse->assign("divListado","innerHTML",$tabla);
  //mostramos un alert
  return $objResponse; //retornamos la respuesta AJAX
}
 $xajax->processRequest(); //procesando cualquier petición AJAX
?>
y el codigo de index.common.php
<?php
//importando las librerias XAJAX
require_once ("xajax/xajax_core/xajax.inc.php");
$xajax = new xajax("index.server.php");
//asociamos la función creada en index.server.php al objeto XAJAX
$xajax->registerFunction("ListarCursosXCiclo");
?>
Muchas gracias de antemano.

1 Respuesta

Respuesta
1
¿Pero qué error te da...? Sino muestra nada puede ser que exista un error en la consulta o en la sintaxis del código...
Me emite "error en el script de esta página se esperaba un objeto", me parece que el error esta en esta linea
<select name="cboCiclos" id="cboCiclos" onchange="ListarCursosXCiclo(this.value);">
Que llama a la función ListarCursosXCiclo para mostrar los registros según el valor seleccionado en el combo,
ya verifique cambiando <select name="cboCiclos" id="cboCiclos" onchange="alerta=valor seleccionado"> y me emite el mensaje pero cuando llamo la función no lo hace
Gracias
Puede ser que esta función no este funcionando valga la redundancia
$xajax->printJavascript('xajax/');
Bajaste la librería xajax sino no ter servirá el ejemplo...
Si baje la libreria ajax, lo único que cambié del ejemplo es la base de datos y las tablas la que estoy utilizando es postgres y el ejemplo presenta una bd mysql, asi que cambié las funciones para conexion a las que se utiliza con postgres, esta es la función
require("index.common.php");
//función que lista el personal según actividad
function ListarCursosXCiclo($codigo_actividad){
    $db = pg_connect("host=127.0.0.1 dbname=SIIO user=postgres password=abc123") or
    die ("Fallo en el establecimiento de la conexión");
    $objResponse = new xajaxResponse();
//instanciamos el objeto para la respuesta AJAX
//ISO-8859-1 significa que los caracteres latinos como la ñ y los acentos seran tomados en cuenta
    $sql=sprintf('select codigo_personal,descripcion,estado from personal where codigo_actividad=%d',$codigo_actividad);
      $rspersonal=pg_query ($db, $sql);
    $cantRegistros=pg_numrows($rspersonal);
    $tabla=''; //variable donde guardaremos la tabla HTML que luego se mostrara mediante AJAX
//if($cantRegistros>0){ // Si existen registros entonces armamos la cabecera de la tabla
  $tabla='
<table width="50%" border="1">
<tr>
     <th scope="col">CODIGO PERSONAL</th>
     <th scope="col">DESCRIPCIÓN</th>
     <th scope="col">ESTADO</th>
</tr>
';
   while($row=pg_fetch_array($rspersonal,null, PGSQL_ASSOC)){ //recorriendo registro x registro y armando la tabla
   $tabla.='
<tr>
<td>'.$row['codigo_personal'].'</td>
<td>'.$row['descripcion'].'</td>
<td>'.$row['estado'].'</td>
</tr>
';
  }
  $tabla.='
</table>
';
  }
  //asignando el contenido de la varabiale $tabla al div que esta en index.php
  //innerHTML reemplaza el contenido HTML por otro
  $objResponse->assign("divListado","innerHTML",$tabla);
  //mostramos un alert
  return $objResponse; //retornamos la respuesta AJAX
}
 $xajax->processRequest(); //procesando cualquier petición AJAX
?>
Lo que coloco en negrita es código php para bd postgres eso fue lo que cambié del ejemplo original
Realmente en este caso solo puedo darte ideas ya que nunca he usado xajax yo uso jQuery para el ajax ahora lo único que veo que pueda estar dando error es $xajax->printJavascript('xajax/'); por que el error que te da es de javascript y no de PHP así que de ser que no estas incluyendo algo que necesita el ejemplo para funcionar.
Esta funcion $xajax->printJavascript('xajax/'); pareciera que es la que genera el javascript necesario para que funciones asi que valida que hace.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas