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

les dejo ejemplo ajax+asp, aunque con algunas dudas

Estas en el tema de les dejo ejemplo ajax+asp, aunque con algunas dudas en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/08/2005, 09:42
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
les dejo ejemplo ajax+asp, aunque con algunas dudas

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 nombrescps;  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>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         <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.
__________________
by Capitán Buscapina
.
  #2 (permalink)  
Antiguo 19/08/2005, 15:07
Avatar de edwinandlozano  
Fecha de Ingreso: octubre-2003
Mensajes: 272
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola.. chevere el que coloques ejemplos para que los demas podamos aprender... ahora que dices de que te funciona en IE y no FireFox y Opera busque en internet y encontre algo referente a eso:

http://www.mozilla.org/xmlextras/

ahora mi pregunta es .. el porque no se maneja un estandar para estas cosas.....??????
  #3 (permalink)  
Antiguo 19/08/2005, 16:32
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
hola, gracias por el link, el problema que yo de inglish ni un cahito (ya me da trabajo el castellano....).
Sobre tu pregunta, la verdad es que no soy muy entendido para darte una opinion sobre estándares.

Lo que ocurre es que como leí en algun lado , este metodo no es para un uso exclusivo sino que se debería brindarle al usuario el cual su navegador no lo soporta, alguna otra opción( y tampoco basar todo nuestro sitio en ajax).

saludos
__________________
by Capitán Buscapina
.
  #4 (permalink)  
Antiguo 21/08/2005, 10:45
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
ok, ahora si

haora si que funca en IE, opera y firefox (creo )


function llenaciudad(teclas){
var url="verifciudades.asp?verif="+teclas;
var req;
{
// comprueba el objeto nativo XMLHttpRequest
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// comprueba la versión ActiveX
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}

function processReqChange(){
var nombres,cps;
opcciudads=document.forms['f6']['nombreciudad'];
// sólo si está completado
if (req.readyState == 4) {
// sólo si es "OK"
if (req.status == 200) {
// ...aquí va el proceso...
response = req.responseXML.documentElement;
array_nombres=response.getElementsByTagName('nombr es')[0].firstChild.data;
array_cps=response.getElementsByTagName('cps')[0].firstChild.data;
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;


} else {
alert("Se produjo un error reciviendo los datos XML:\n" + req.statusText);
}
}
}
}

function pulsar(e) {
tecla=(document.all) ? e.keyCode : e.which;
if (tecla==32 || tecla==13){
document.getElementById('ciudad').value=document.f orms['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)">
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;
<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>




__________________
by Capitán Buscapina
.
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 19:49.