ejemplo de ajax para llenar uncampo con datos de una base de datos sin recargar la pagina a medida que se van ingresando las primeras letras.
ejemploajax.asp
Código PHP:
<html> <head> <script> function NewAjax(){ var xmlhttp = false; try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined'){ xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function llenaciudad(teclas){ var nombres, cps; opcciudads=document.forms['f6']['nombreciudad']; Ajaxx = NewAjax(); Ajaxx.Open("GET", "verifciudades.asp?verif="+teclas,true); Ajaxx.onreadystatechange = function(){ if (Ajaxx.readyState == 4){ array_nombres=Ajaxx.responseXML.getElementsByTagName("nombres")[0].childNodes[0].nodeValue; array_cps=Ajaxx.responseXML.getElementsByTagName("cps")[0].childNodes[0].nodeValue; nombres=array_nombres.split(","); cps=array_cps.split(","); cuantos_nombres=nombres.length; opcciudads.style.visibility="visible"; for (r=(opcciudads.length);r>0;r--){ opcciudads.options[r-1]=null; } for (e=0;e<cuantos_nombres;e++){ opcciudads.options[e]=new Option(nombres[e]+"."+cps[e],nombres[e]+"."+cps[e],false,false); } opcciudads.options[0].selected=true; } } Ajaxx.Send(null) } function pulsar(e) { tecla=(document.all) ? e.keyCode : e.which; if (tecla==32 || tecla==13){ document.getElementById('ciudad').value=document.forms['f6']['nombreciudad'].value; }else{ if (tecla==38 || tecla==40){ return false; } } document.forms['f6']['nombreciudad'].style.visibility="hidden"; document.forms['f6']['Submit'].focus(); } </script> </head> <body bgcolor="#FFFFFF" text="#000000"> <div id="ing6" > <form name="f6" method="post" ><center> <br> Ciudad <input id="ciudad" type="text" name="ciudad" size="60" onkeyup="llenaciudad(this.value,'f6')"> <br> <select name="nombreciudad" style="visibility:hidden;width:300;" size="3" onkeydown="pulsar(event)"> </select> <br> <input type="submit" name="Submit" value="Enviar"> </center> </form> </div> </body> </html>
verifciudades.asp
Código PHP:
<% set rs = server.createobject("adodb.recordset") strconn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("ciudades.mdb") set con = Server.Createobject("adodb.connection") con.open strconn verif=request("verif") response.ContentType="text/xml" response.Write("<?xml version='1.0' encoding='ISO-8859-1'?>") response.write "<respuesta>" if IsNumeric(verif) then sqltext = "SELECT ciudad,cp FROM ciudadesycp Where cp LIKE '"&verif&"%';" else sqltext = "SELECT ciudad,cp FROM ciudadesycp Where ciudad LIKE '"&verif&"%';" end if rs.Open sqltext,con if rs.eof then response.write "<nombres>no</nombres>" response.write "<cps>no</cps>" else Do while not rs.eof nombres=nombres & rs("ciudad") & "," cps=cps & rs("cp") & "," rs.movenext loop nombres=nombres & "qqq" cps= cps & "qqq" nombres=replace(nombres,",qqq","") cps=replace(cps,",qqq","") response.write "<nombres>" & nombres & "</nombres>" response.write "<cps>" & cps & "</cps>" end if rs.close con.close set rs=nothing set con=nothing response.write "</respuesta>" %>
en IE va OK, ahora en Firefox y Opera
, sigo sin hacerlo funcionar
si alguien tiene alguna sujerencia para mejorarlo, bienvenida sera.
saludos
pd: me salió todo en una linea, pero creo que está todo.