Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » Programación en General » Búsqueda con Ajax y CGI Responder al tema


Página 1 de 1  [ 10 mensajes ] 
 
Nota Mar Jun 30, 2009 2:04 pm

Perlero Nuevo
Registrado: Jue May 22, 2008 12:00 pm
Mensajes: 71
Búsqueda con Ajax y CGI
Buenas...

Resulta que vi un ejemplo de búsqueda (autocompletar) pero está en PHP y MySQL... quizá pasar esa funcionalidad a Perl con SQL Server pero no me genera el funcionamiento.

En PHP - crean un XML, el cual realizo en Perl (cgi) y todo lo demás lo dejo igual... porque es JavaScript...

A ver si me pueden echar una mano de cómo es... lo que veo en PHP trato de hacerlo en Perl... lo único que me falta de uno contra el otro es declarar las cabeceras XML... yo la declaro así...

Sintáxis: [ Descargar ] [ Ocultar ]
Usando Coloreado de perl
print header(Content-type => 'text/xml');


Mi código es este:

express1.cgi

Sintáxis: [ Descargar ] [ Ocultar ]
Usando Coloreado de perl
$sth = $dbh->prepare("SELECT top 10 A.express AS express,A.nomfno AS nombre, A.tipfno AS tipo, B.descripcion AS descrip FROM  USR_DTS.COLONIAS_AS400 A LEFT  JOIN USR_DTS.TIPFNO B ON(A.tipfno=B.tipo) WHERE A.tipfno != 508 and A.tipfno !=509 and A.nomfno LIKE '$nombrex%' order by A.nomfno asc" )
$sth->execute or MiError($DBI::errstr);

  print "<?xml version='1.0' encoding='iso-8859-15' ?>";
  print "<content>";
   $label.="<labels>";
    while ($sth->fetch){
        $sth->bind_col(2,\$nombre);
        $sth->bind_col(4,\$Coles);

        $label.="\n<label>$nombre</label>\n";

    }
       $label.="</labels>";
     print "$label</content>";


La librería Ajax (js)... que es la que autocompleta, vi estas declaraciones iniciales:

Sintáxis: [ Descargar ] [ Ocultar ]
Usando Coloreado de javascript
var Conexion=false;  // Variable que manipula la conexion.
var Servidor="\/cgi-bin\/eflow\/admin\/express1.cgi";  // Determina la pagina donde buscar
var Palabra=""; //Determina la ultima palabra buscada.


La variable servidor es la única que modifiqué pero al parecer no lo carga pues manda el siguiente error...

Código:
500-Internal Server Error


No sé si sea por la declaración de la cabecera de XML.

¡¡ Espero me haya explicado !!


Nota Mar Jun 30, 2009 4:21 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 6219
El fallo 500 puede ser debido a un montón de cosas.

Usa el módulo CGI::Carp, como puedes ver en mi CGI mínimo, y luego llama al CGI directamente desde el web, para ver si da algún error en pantalla.

No te olvides tampoco de mirar los ficheros log de actividad del servidor web.

_________________
JF^D Perl programming


Nota Mié Jul 01, 2009 8:53 am

Perlero Nuevo
Registrado: Jue May 22, 2008 12:00 pm
Mensajes: 71
ya cale el archivo minimo.pl , lo ejecute desde el shell (sin envio de parametros) y funciono bien , lo ejecute desde el navegador IE y me envio el siguiente error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

e igual calo con envio de parametros y pues nada.......

en los archivos log extrañamente no me habla de ese error, no lo registra!

que sera... !! por que ya en este servidor he ejecutado archivos .cgi y todos han funcionado bien... solo este ejemplo en el cual quiero implementar esta funcionalidad de ajax...


Nota Jue Jul 02, 2009 7:53 am
Avatar de Usuario
Vive para Perl en Español
Registrado: Mar Nov 18, 2003 4:13 pm
Ubicación: Buenos Aires
Mensajes: 455
la primera línea de respuesta en tu scrpt debería de enviar un

content-type:text/xml\n\n

para que le diga al navegador web que el contenido es texto...si no colocas esa línea el navegador muestra ese error...

También puede ser por no haberle dado permisos de ejecución chmod 755

Saludos

_________________
MonoSwim


Nota Jue Jul 02, 2009 5:34 pm

Perlero Nuevo
Registrado: Jue May 22, 2008 12:00 pm
Mensajes: 71
Re: Búsqueda con Ajax y CGI
perfecto monoswim mil gracias, ahora la busqueda la realiza perfecto en navegador poniendo la liga y un parametro de busqueda ahora un cuestion que sucede , no se si te ha pasado es que hago una consulta por 10 concidencias de ese parametro pero solo me arroja 9 , el primer renglon no me lo muestra por que ya cale la consulta en un visualizador sql server y si me da bien los registro, pienso que tengo un detalle ahi con las funciones con el DBI que utilizo
mi codigo es el siguiente haber si por ahi es donde este el detalle

Sintáxis: [ Descargar ] [ Ocultar ]
Usando Coloreado de perl
#!/usr/bin/perl
use DBI;

use CGI       qw(:standard      );
use CGI::Carp qw(fatalsToBrowser);

$query= new CGI;

$nombrex= $query->param('input');

$dbh = DBI->connect('dbi:Sybase:server=192.1.1.8:1433','usr_dts','usr_dts') or MiError($DBI::errstr);
$sth = $dbh->do("use colonias") or MiError($DBI::errstr);
$sth = $dbh->prepare("SELECT top 11 A.express AS express,A.nomfno AS nombre, A.tipfno AS tipo, B.descripcion AS descrip FROM  USR_DTS.COLONIAS_AS400 A LEFT JOIN USR_DTS.TIPFNO B ON(A.tipfno=B.tipo) WHERE A.tipfno != 508 and A.tipfno !=509 and A.nomfno LIKE '$nombrex%' order by A.nomfno asc");

$sth->execute or MiError($DBI::errstr);

    print "content-type: text/xml\n\n";
    print "<?xml version='1.0' encoding='iso-8859-15' ?>";
    print "<content>";
    $label.="<labels>";
$i =0;
     while ($sth->fetch){
       $i++;
       $sth->bind_col(2,\$nombre);
       $label.="\n<label>$i.- $nombre</label>\n";
    }
       $label.="</labels>";

     print "$label</content>";
}
 


y me arroja el siguiente resultado y no me aparece dato alguno en el registro 1:

<?xml version="1.0" encoding="iso-8859-15" ?>
- <content>
- <labels>
<label>1.-</label>
<label>2.-LOMAS DE ARBIDE</label>
<label>3.-LOMAS DE COMANJILLA</label>
<label>4.-LOMAS DE CHAPULTEPEC, MEXICO</label>
<label>5.-LOMAS DE ECHEVESTE</label>
<label>6.-LOMAS DE GRAN JARDIN</label>
<label>7.-LOMAS DE GUADALUPE</label>
<label>8.-LOMAS DE IBARRILLA</label>
<label>9.-LOMAS DE JEREZ</label>
<label>10.-LOMAS DE LA PISCINA</label>
</labels>
</content>

espero me puedan ayudar, explorer , monoswim. gracias !!


Nota Jue Jul 02, 2009 5:58 pm

Perlero Frecuente
Registrado: Dom May 04, 2008 1:11 am
Ubicación: Ciudad del Este, Paraguay
Mensajes: 133
Re: Búsqueda con Ajax y CGI
Yo particularmente, si tuviera ese problema, recurriría al método ensayo/error. Probando variable por variable, de esta forma depurándolo, hasta encontrar el problema. ;)

_________________
With Perl
Imagination is more important than knowledge. Albert Einstein.


Nota Jue Jul 02, 2009 6:19 pm

Perlero Nuevo
Registrado: Jue May 22, 2008 12:00 pm
Mensajes: 71
Re: Búsqueda con Ajax y CGI
no entendi muy bien netsoul,, como esta eso de prueba y error en este caso !!?? buscar otras funciones? otra forma de aplicar el while , de acceder a los datos ??

gracias.....


Nota Vie Jul 03, 2009 4:35 pm

Perlero Frecuente
Registrado: Dom May 04, 2008 1:11 am
Ubicación: Ciudad del Este, Paraguay
Mensajes: 133
Re: Búsqueda con Ajax y CGI
Fijate en la línea 23, quita el $i++; y ponlo por debajo de la línea 25.

_________________
With Perl
Imagination is more important than knowledge. Albert Einstein.


Nota Vie Jul 03, 2009 4:43 pm

Perlero Nuevo
Registrado: Jue May 22, 2008 12:00 pm
Mensajes: 71
Re: Búsqueda con Ajax y CGI
si gracias netsoul se soluciono de la siguiente manera....

Sintáxis: [ Descargar ] [ Ocultar ]
Usando Coloreado de perl
print "content-type: text/xml\n\n";
    print "<?xml version=&#39;1.0&#39; encoding=&#39;iso-8859-15&#39; ?>";
    print "<content>";
    $label.="<labels>";
           $sth->bind_col&#40;2,\$id&#41;;       # agregando esta lineas del primer registro
           $sth->bind_col&#40;3,\$nombre&#41;; # agregando esta lineas del primer registro
    while &#40;$sth->fetch&#41;{
        $label.="<id>$id</id><label>$nombre</label>\n";  # imprimo el primer registro y continua el while
        $sth->bind_col&#40;2,\$id&#41;;
        $sth->bind_col&#40;3,\$nombre&#41;;
    }
    $label.="</labels>";
    print "$label</content>";


Nota Vie Jul 03, 2009 5:11 pm

Perlero Nuevo
Registrado: Jue May 29, 2008 3:22 pm
Ubicación: Guatemala
Mensajes: 61
Re: Búsqueda con Ajax y CGI
el bind tiene que ir afuera del while, ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
Usando Coloreado de perl
$sth->bind_columns&#40;\$name, \$email&#41;;
        while &#40;$sth->fetch&#40;&#41;&#41; {
                print "$name <$email>\n";
        }


Responder al tema  [ 10 mensajes ] 

Reglas del Foro
No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë
phpBB SEO