Foros del Web » Programando para Internet » ASP Clásico »

Ajax con ASP

Estas en el tema de Ajax con ASP en el foro de ASP Clásico en Foros del Web. compadres de forosdelweb....tengo un problema con un codigo para autocompletar en ASP con Ajax.. Este es el codigo: Formulario: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ASP: Ver original ...

  #1 (permalink)  
Antiguo 21/12/2009, 14:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Ajax con ASP

compadres de forosdelweb....tengo un problema con un codigo para autocompletar en ASP con Ajax..

Este es el codigo:

Formulario:
Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <html>
  3. <head>
  4. <script src="clienthint.js"></script>
  5. </head>
  6. <body>
  7. <%
  8. 'this displays the value of the textbox after the form is submitted
  9. If trim(Request("txt1")) <> "" Then
  10.     Response.Write "You entered:"
  11.     Response.Write "<b>" & Request("txt1") & "</b><br /><br />"
  12. End If
  13. %>
  14. <form name="form1" action="clienthint.asp" method="post">
  15. Buscar:
  16. <input type="text" name="txt1" id="txt1" onKeyUp="showHint(this.value,'txt1','form1',true)">
  17. <input type="submit" name="submit" value="Enviar">
  18. </form>
  19. <p>Sugerencias:  <span id="txtHint"></span></p>
  20. </body>
  21. </html>

clienthint.js
Código PHP:
var xmlHttp

function showHint(strboxthisFormautoSubmit)
{
if (
str.length==0)
  { 
  
document.getElementById("txtHint").innerHTML="";
  return;
  }
xmlHttp=GetXmlHttpObject()
if (
xmlHttp==null)
  {
  
alert ("Your browser does not support AJAX!");
  return;
  } 
var 
url="gethint.asp";
url=url+"?q="+str;
url=url+"&b="+box;
url=url+"&f="+thisForm;
url=url+"&a="+autoSubmit;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);


function 
stateChanged() 

if (
xmlHttp.readyState==4)

document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}

function 
GetXmlHttpObject()
{
var 
xmlHttp=null;
try
  {
  
// Firefox, Opera 8.0+, Safari
  
xmlHttp=new XMLHttpRequest();
  }
catch (
e)
  {
  
// Internet Explorer
  
try
    {
    
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (
e)
    {
    
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return 
xmlHttp;
}

//this function allows for Clickable suggestions
function setTextBox(thisText,thisBox,thisForm,autoSubmit){
    
document.getElementById(thisBox).value thisText
    
//this autoSubmits the form after a suggestion is clicked - it is not working :(
    //if(autoSubmit=='true'){
    //    alert(thisForm);
    //    document.getElementById(thisForm).submit();
    //}

Y el archivo ASP que ejecuta la consulta en la base de datos:

gethint.asp
Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <%
  3. response.expires=-1
  4. Dim rsWords
  5. Dim rsWords_numRows
  6. Dim q
  7. Dim b
  8. Dim hint
  9. q=ucase(request.querystring("q"))
  10. b=(request.querystring("b"))
  11. f=(request.querystring("f"))
  12. a=(request.querystring("a"))
  13. hint=""
  14. Set rsWords = Server.CreateObject("ADODB.Recordset")
  15. rsWords.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db_hint_words.mdb")
  16. rsWords.Source = "SELECT *  FROM TBL_WORDS  WHERE (word LIKE'" + q + "%') ORDER BY WORD"
  17. rsWords.CursorType = 2
  18. rsWords.CursorLocation = 2
  19. rsWords.LockType = 3
  20. rsWords.Open()
  21. rsWords_numRows = 0
  22.  
  23. If Not rsWords.EOF Then
  24.     Do While Not rsWords.EOF
  25.     'response.write(rsWords.Source)
  26.         If trim(hint) = "" Then
  27.            
  28. hint = "<a href=""javascript:setTextBox('" & rsWords("word") & "','" & b & "','" & f & "','" & a & "');"">" & rsWords("word") & "</a>"
  29.        
  30.         Else
  31.        
  32. hint = hint & " , <a href=""javascript:setTextBox('" & rsWords("word") & "','" & b & "','" & f & "','" & a & "');"">" & rsWords("word") & "</a>"
  33.         End If
  34.         rsWords.MoveNext()
  35.     Loop
  36. End If
  37. if trim(hint)="" then
  38.   response.write("No se han encontrado coincidencias")
  39. else
  40.   response.write(hint)
  41. end if
  42.  
  43. rsWords.Close()
  44. Set rsWords = Nothing
  45. %>

Bueno , lo que pasa es que los resultados los despliega hacia el lado y yo quiero que los despliegue hacia abajo como si fuera una lista desplegable me entienden?

Creo que lo que se debe modificar está en el último archivo, osea el que ejecuta la consulta a la base de datos y muestra los resultados, el gethint.asp

De antemano muchas gracias
  #2 (permalink)  
Antiguo 21/12/2009, 14:42
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Ajax con ASP

Pues no, lo que ocupas modificar es la apariencia/posición de la capa txtHint, y supongo que eso lo debes hacer en el formulario donde la defines.
  #3 (permalink)  
Antiguo 21/12/2009, 14:54
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

gracias por la pronta respuesta Myakire....entonces en cuál de los archivos hay que hacer la modificacion? porque los 3 archivos que postee son los que se utilizan....
mira...asi es como se ve ahora:




yo quiero que los resultados aparezcan como las sugerencias de google...pero no he encontrado otro codigo de este tipo en ASP.....he encontrado en PHP y yo no lo entiendo...:(
  #4 (permalink)  
Antiguo 22/12/2009, 05:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Hace un par de meses monté, a ver si es lo que estás buscando

SelecUsuariosAjax.html

Código Javascript:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  3. <head>
  4. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  5. <STYLE TYPE="text/css">
  6. #contenedor div.seleccionado {font-weight:bold; background:#F0F0F0; color:#FF6600;}
  7. #contenedor div.deseleccionado {background:#FFFFFF; color:#000000;}
  8. #contenedor div{font:11px verdana; color:#000000; cursor:pointer; text-align:left; padding:2px 5px;}
  9.  
  10. .capa {
  11. background: #FFFFFF;
  12. border:1px solid rgb(120,120,120);
  13. width: 144px;
  14. _width: 146px;
  15. text-align: left;
  16. position: absolute;
  17. top: 30px;
  18. _top:38px;
  19. left: 117px;
  20. _left: 119px;
  21. }
  22. </STYLE>
  23. <script type="text/javascript">
  24. var SelUsuario = {
  25.  
  26. Evento: function (elemento,nomevento,funcion) {
  27.   if (elemento.attachEvent)
  28.   {
  29.       var f=function(){
  30.         funcion.call(elemento,window.event);
  31.     }
  32.     elemento.attachEvent('on'+nomevento,f);
  33.     return true;
  34.   }
  35.   else  
  36.     if (elemento.addEventListener)
  37.     {
  38.       elemento.addEventListener(nomevento,funcion,false);
  39.       return true;
  40.     }
  41.     else
  42.       return false;
  43. },
  44.  
  45.  
  46.  
  47. init: function(){
  48. var elem1 = document.getElementById("txt");
  49. var elem2 = document.getElementById("contenedor");
  50.         SelUsuario.Evento(elem1, 'keyup', SelUsuario.Empieza);
  51.         SelUsuario.Evento(elem2, 'mouseover', SelUsuario.Seleccionar);
  52.         SelUsuario.Evento(elem1, 'keydown', SelUsuario.Pegar2);
  53.         SelUsuario.Evento(window, 'click', SelUsuario.Cerrar);
  54.     },
  55.  
  56.  
  57.  
  58.  
  59. creaAjax: function (){
  60.     var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
  61.     var ajax = false;
  62.     for(var i=0 ; !ajax && i<ajaxs.length ; i++){
  63.         try{
  64.             ajax = new ActiveXObject(ajaxs[i]);   // Internet Explorer
  65.         }
  66.         catch(e) {
  67.             ajax = false;
  68.         }
  69.     }
  70.     if(!ajax && typeof XMLHttpRequest!='undefined') {
  71.         ajax = new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  72.     }
  73.     return ajax;
  74. },
  75.  
  76.  
  77.  
  78. Empieza: function (ev) {
  79. var str = document.getElementById(this.id).value;
  80. var obj = document.getElementById("contenedor");
  81. var ref = obj.getElementsByTagName('DIV');
  82. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  83.  
  84.  if (keyCode == 40) {
  85. //alert("flecha abajo")
  86.     SelUsuario.BajaOpt ()
  87.  } else if (keyCode == 38) {
  88. //alert("flecha arriba")
  89.     SelUsuario.SubeOpt ()
  90.  
  91.  
  92.  
  93.  
  94. } else if (keyCode == 13) {
  95.  
  96. for (var i = 0; i <= ref.length-1; i++) {
  97. if (ref[i].className == "seleccionado") {
  98.  
  99.         document.getElementById("txt").value = ref[i].id;
  100.         if (obj.style.display == "block"); obj.style.display= "none";
  101.         break;
  102.         }
  103.  
  104.     }
  105.  
  106.     try{ // DOM;
  107.         ev.preventDefault();
  108.         }catch(e){ // iexplore;
  109.         ev.returnValue = false;
  110.         }
  111.  
  112. } else {
  113.  
  114.     if (str.length < 2) {
  115.         //obj.innerHTML = "";
  116.         if (obj.style.display == "none")  obj.style.display= "none";
  117.                 else obj.style.display= "none";
  118.         return;
  119.     }
  120.     ajax = SelUsuario.creaAjax()
  121.     if (ajax==null) {
  122.         alert ("Tu navegador no soporta Ajax");
  123.         return;
  124.      }
  125. var url="SelecUsuarios.asp?q="+escape(str);
  126.     ajax.open("GET",url,true);
  127.     ajax.onreadystatechange = SelUsuario.Despliega;
  128.     //ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  129.             ajax.send(null);
  130.             return
  131. }
  132. },
  133.  
  134.  
  135. Despliega: function () {
  136. var obj = document.getElementById("contenedor");
  137.    
  138.         if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
  139.                                         obj.innerHTML = "<p align='center'><img src='precarga.gif' border='0px' widht='15px' height='15px'/></p>";
  140.             obj.style.display= "block";
  141.                 }
  142.  
  143.                 else if (ajax.readyState==4) {
  144.             if (ajax.status==200) {
  145.             obj.innerHTML = unescape(ajax.responseText);
  146.  
  147.             }else {
  148.                                     obj.innerHTML = "<p>Se ha producido un error</p>";
  149.             }
  150.  
  151.         if (obj.style.display == "none")  obj.style.display= "block";
  152.         }
  153. },
  154.  
  155.  
  156.  
  157. Seleccionar: function () {
  158. var ref = document.getElementById(this.id).getElementsByTagName('DIV');
  159. //alert(ref);
  160. for (var i = 0; i < ref.length; i++) {
  161.  
  162. SelUsuario.Evento(ref[i], 'click', function() {
  163. SelUsuario.Pegar(this.id);
  164. //alert(this.id);
  165. })  
  166.  
  167.  
  168. SelUsuario.Evento(ref[i], 'mouseover',  function() {
  169. SelUsuario.Marcar(this.id);
  170. })
  171.  
  172. //SelUsuario.Evento(ref[i], 'mouseout',  function() {
  173. //SelUsuario.DesMarcar(this.id);
  174. //})
  175. }
  176. },
  177.  
  178.  
  179.  
  180. Pegar: function (valor) {
  181. //alert("el val " +valor);
  182. var obj = document.getElementById("contenedor")
  183.         document.getElementById("txt").value = valor;
  184.                 if (obj.style.display == "block"); obj.style.display= "none";      
  185. },
  186.  
  187.  
  188. Pegar2: function (ev) {
  189. var obj = document.getElementById("contenedor")
  190. var ref = obj.getElementsByTagName('DIV');
  191. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  192.  
  193. // enter 13 tab 9
  194. if ((keyCode == 13) || (keyCode == 9)) {
  195. //alert("enter")
  196.  
  197. for (var i = 0; i <= ref.length-1; i++) {
  198. if (ref[i].className == "seleccionado") {
  199.  
  200.         document.getElementById("txt").value = ref[i].id;
  201.         //window.focus();
  202.         if (obj.style.display == "block"); obj.style.display= "none";
  203. break;
  204. //alert(ref[i].id);
  205.  
  206.  
  207. }
  208. }
  209.  
  210. if (keyCode == 13) {
  211.     try{ // DOM;
  212.         ev.preventDefault();
  213.         }catch(e){ // iexplore;
  214.         ev.returnValue = false;
  215.         }
  216. }
  217.  
  218.  
  219. }  
  220. },
  221.  
  222.  
  223.  
  224.  
  225.  
  226. BajaOpt: function() {
  227. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  228. for (var i = 0; i <= ref.length-1; i++) {
  229. if (ref[i].className == "seleccionado") {
  230. ref[i].className = "deseleccionado";
  231. if (i < ref.length-1){
  232. i++;
  233. }else{
  234. i = 0;
  235. }
  236. //alert("Largo: " +(ref.length-1)+ " Valor: " +i);
  237. ref[i].className = "seleccionado"
  238. }
  239. }
  240. },
  241.  
  242.  
  243. SubeOpt: function() {
  244. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  245. for (var i = 0; i <= ref.length-1; i++) {
  246. if (ref[i].className == "seleccionado") {
  247. ref[i].className = "deseleccionado";
  248. if (i < ref.length && i > 0){
  249. i--;
  250. }else{
  251. i = ref.length-1;
  252. }
  253. //alert("Largo: " +(ref.length-1)+ " Valor: " +i);
  254. ref[i].className = "seleccionado"
  255. }
  256. }
  257. },
  258.  
  259.  
  260.  
  261. Marcar: function (id) {
  262. var selecionado = document.getElementById(id);
  263. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  264. for (var i = 0; i <= ref.length-1; i++) {
  265. if (ref[i].id != id) {
  266. ref[i].className = "deseleccionado";
  267. selecionado.className = "seleccionado";
  268. }
  269. }
  270. },
  271.  
  272. //DesMarcar: function (id) {
  273. //var ref = document.getElementById(id);
  274. //alert(ref);
  275. //ref.className = "deseleccionado"
  276. //alert("el " +id);        
  277. //},
  278.  
  279.  
  280. Cerrar: function () {  
  281. var obj = document.getElementById("contenedor")
  282.             if (obj.style.display == "block"); obj.style.display= "none";  
  283.    
  284. }
  285. }
  286.  
  287. SelUsuario.Evento(window, 'load', SelUsuario.init);
  288. </script>
  289. </head>
  290. <body>
  291. <form method="post" action="">
  292. Nombre Usuario: <input type="text" name="txt" id="txt" value="" autocomplete="off" tabindex="1" />
  293. <div class="vink" style="margin:5px 0px 0px 10px">
  294. <div id="contenedor" class="capa" style="display:none;"></div>
  295. </div>
  296. Otro campo: <input type="text" name="otro" id="otro" value="" tabindex="2" /><br />
  297. <input type="submit" value="Enviar">
  298. </form>
  299. Resto de la p&aacute;gina
  300. </body>
  301. </html>

SelectUsuarios.asp

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <% Option Explicit %>
  3. <% Response.Buffer=True %>
  4. <% On Error Resume Next  %>
  5. <%Response.charset="utf-8"%>
  6. <%
  7. Response.addHeader "pragma", "no-cache"
  8. Response.CacheControl = "Private"
  9. Response.Expires = -1000
  10. %>
  11. <%
  12. Dim SQL, rs, oConn, registros, i
  13. Dim usuario
  14. Dim nombre
  15. nombre = 0
  16. usuario = CStr(Request.QueryString("q"))
  17.  
  18.  
  19. IF Len(usuario) >= 2 then
  20. ' CONEXIÓN
  21. SQL="Select nombre FROM Usuarios WHERE nombre LIKE '"&usuario&"%' ORDER BY nombre asc"
  22. set rs = oConn.Execute(SQL)
  23. If not rs.eof then
  24. registros = rs.getrows()
  25. Else
  26. Response.Write "<p class=""deseleccionado""><strong>Sin resultados</strong></p>"
  27. Response.End ()
  28. End If
  29. rs.Close
  30. set rs = nothing
  31. oConn.Close
  32. set oConn = nothing
  33. END IF
  34.  
  35. For i = 0 to Ubound(registros,2)
  36. If i = 0 then
  37. Response.Write "<div id="""& registros(nombre,i) &""" class=""seleccionado"">"& ResaltarSubStr(registros(nombre,i)) & "</div>"
  38. Else
  39. Response.Write "<div id="""& registros(nombre,i) &""" class="""">" & ResaltarSubStr(registros(nombre,i)) & "</div>"
  40. End If
  41. Next
  42.  
  43.  
  44. ' ========= Funciones ===========
  45. Function ResaltarSubStr(texto)
  46. Dim objRegExp
  47.  
  48.     Set objRegExp= New RegExp
  49. objRegExp.IgnoreCase = True
  50. 'objRegExp.Global = True
  51.  
  52. objRegExp.Pattern = "\b("&usuario&")+(\w)"
  53. texto = objRegExp.Replace(texto, "<strong>$1</strong>$2")
  54.  
  55.     Set objRegExp = Nothing
  56.  
  57.     ResaltarSubStr = texto
  58.  
  59. End Function
  60. ' ========= Fin Funciones ===========
  61. %>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 22/12/2009, 08:17
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP



Eso es exactamente lo que buscaba Adler!!!! te lo agradezco infinitamente!!!!

Una consulta....el segundo campo no se utiliza y a me gustaria saber como hacer para que por ejemplo tuviera un combobox (o dos) que tuviera dos opciones (por ejemplo con / sin stock) y al momento de escribir en el campo de texto se ejecutara la consulta con esos dos criterios me entiendes ??

Nuevamente te agradezco .....pero me encantaria saber como hacer lo que te explique.....

De antemano muchas gracias
  #6 (permalink)  
Antiguo 22/12/2009, 20:49
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 18 años, 3 meses
Puntos: 8
Respuesta: Ajax con ASP

pone un <br> en estas lineas


hint = "<a href=""javascript:setTextBox('" & rsWords("word") & "','" & b & "','" & f & "','" & a & "');"">" & rsWords("word") & "</a><br>"



hint = hint & " , <a href=""javascript:setTextBox('" & rsWords("word") & "','" & b & "','" & f & "','" & a & "');"">" & rsWords("word") & "</a><br>"
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #7 (permalink)  
Antiguo 23/12/2009, 09:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Sería algo como esto

Cita:
Empieza: function (ev) {
var str = document.getElementById(this.id).value;
var obj = document.getElementById("contenedor");
// Aquí creas otra var para recoger el valor del otro campo
var obj2 = document.getElementById("campo").value;......

// Ahora aquí lo envias
var url="SelecUsuarios.asp?q="+escape(str) + "&variable=" +var2;
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 24/12/2009, 08:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

mmm no me resulto Adler....ademas que no se como recibir los parametros en
SelectUsuarios.asp.....porque solo esta esto:

usuario = CStr(Request.QueryString("q"))


entonces no se como recibir la seleccion del combobox

De antemano muchas gracias
  #9 (permalink)  
Antiguo 26/12/2009, 06:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Pues igual que recoges es parámetro q, así combox = CStr(Request.QueryString("variable"))

Lo que está en rojo es una función que dice que tipo de dato se espera recibir, en este caso un string

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 28/12/2009, 13:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Ajax con ASP

A ver ...... no se si aplique, por que no he leído todo el hilo, pero a ojo de buen cubero, como que esto apunta a este problema ...

Jamás vas a poder si sigues buscando una variable con .QueryString, si la mandaste por POST, debes de leerla con .Form


Cita:
...
<form method="post" action="">
...
En su defecto, si no sabes por qué método se mando, debieras leerla solo con Request("variable"), pero solo si no sabes por que colección buscar, ya que esto leera primero las QueryString y luego las Form, lo que es obvio le pegara al rendimiento

Saludos
  #11 (permalink)  
Antiguo 29/12/2009, 05:43
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Cita:
Iniciado por Myakire Ver Mensaje
A ver ...... no se si aplique, por que no he leído todo el hilo, pero a ojo de buen cubero, como que esto apunta a este problema ...

Jamás vas a poder si sigues buscando una variable con .QueryString, si la mandaste por POST, debes de leerla con .Form

En su defecto, si no sabes por qué método se mando, debieras leerla solo con Request("variable"), pero solo si no sabes por que colección buscar, ya que esto leera primero las QueryString y luego las Form, lo que es obvio le pegara al rendimiento

Saludos

No, hay que recogerla con .querystring puesto que la llama es sincrona. Te estás fijando en el método del form pero ahora mismo no es importante si es get o post. Los eventos se recogen aquí

Código Javascript:
Ver original
  1. init: function(){
  2. var elem1 = document.getElementById("txt");
  3. var elem2 = document.getElementById("contenedor");        
  4. SelUsuario.Evento(elem1, 'keyup', SelUsuario.Empieza);        
  5. SelUsuario.Evento(elem2, 'mouseover', SelUsuario.Seleccionar);        
  6. SelUsuario.Evento(elem1, 'keydown', SelUsuario.Pegar2);        
  7. SelUsuario.Evento(window, 'click', SelUsuario.Cerrar);    
  8. },

Ahhhh, se me olvidaba; Feliz Navidad Myakire
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 29/12/2009, 08:29
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

compadres...sigo con problemas...
probe con request.form y request.querystring
este es el codigo con las modificaciones que me dijo Adler:

SelectUsuariosAjax.asp
Código ASP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  3. <head>
  4. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  5. <STYLE TYPE="text/css">
  6. #contenedor div.seleccionado {font-weight:bold; background:#F0F0F0; color:#black;}
  7. #contenedor div.deseleccionado {background:#FFFFFF; color:#000000;}
  8. #contenedor div{font:11px verdana; color:#000000; cursor:pointer; text-align:left; padding:2px 5px;}
  9. .capa {
  10. background: #FFFFFF;
  11. border:1px solid rgb(120,120,120);
  12. width: 150px;
  13. _width: 250px;
  14. text-align: left;
  15. position: absolute;
  16. top: 30px;
  17. _top:38px;
  18. left: 117px;
  19. _left: 119px;
  20. }
  21. </STYLE>
  22. <script type="text/javascript">
  23. var SelUsuario = {
  24.  
  25. Evento: function (elemento,nomevento,funcion) {
  26.   if (elemento.attachEvent)
  27.   {
  28.       var f=function(){
  29.         funcion.call(elemento,window.event);
  30.     }
  31.     elemento.attachEvent('on'+nomevento,f);
  32.     return true;
  33.   }
  34.   else  
  35.     if (elemento.addEventListener)
  36.     {
  37.       elemento.addEventListener(nomevento,funcion,false);
  38.       return true;
  39.     }
  40.     else
  41.       return false;
  42. },
  43.  
  44. init: function(){
  45. var elem1 = document.getElementById("txt");
  46. var elem2 = document.getElementById("contenedor");
  47.         SelUsuario.Evento(elem1, 'keyup', SelUsuario.Empieza);
  48.         SelUsuario.Evento(elem2, 'mouseover', SelUsuario.Seleccionar);
  49.         SelUsuario.Evento(elem1, 'keydown', SelUsuario.Pegar2);
  50.         SelUsuario.Evento(window, 'click', SelUsuario.Cerrar);
  51. },
  52.  
  53. creaAjax: function (){
  54.     var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
  55.     var ajax = false;
  56.     for(var i=0 ; !ajax && i<ajaxs.length ; i++){
  57.         try{
  58.             ajax = new ActiveXObject(ajaxs[i]);   // Internet Explorer
  59.         }
  60.         catch(e) {
  61.             ajax = false;
  62.         }
  63.     }
  64.     if(!ajax && typeof XMLHttpRequest!='undefined') {
  65.         ajax = new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  66.     }
  67.     return ajax;
  68. },
  69.  
  70. Empieza: function (ev) {
  71. var str = document.getElementById(this.id).value;
  72. var obj = document.getElementById("contenedor");
  73. var obj2 = document.getElementById("campo").value;
  74. var ref = obj.getElementsByTagName('DIV');
  75. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  76.  
  77.  if (keyCode == 40) {
  78. //alert("flecha abajo")
  79.     SelUsuario.BajaOpt ()
  80.  } else if (keyCode == 38) {
  81. //alert("flecha arriba")
  82.     SelUsuario.SubeOpt ()
  83.  
  84. } else if (keyCode == 13) {
  85.  
  86. for (var i = 0; i <= ref.length-1; i++) {
  87. if (ref[i].className == "seleccionado") {
  88.  
  89.         document.getElementById("txt").value = ref[i].id;
  90.         if (obj.style.display == "block"); obj.style.display= "none";
  91.         break;
  92.         }
  93.  
  94.     }
  95.  
  96.     try{ // DOM;
  97.         ev.preventDefault();
  98.         }catch(e){ // iexplore;
  99.         ev.returnValue = false;
  100.         }
  101.  
  102. } else {
  103.  
  104.     if (str.length < 2) {
  105.         //obj.innerHTML = "";
  106.         if (obj.style.display == "none")  obj.style.display= "none";
  107.                 else obj.style.display= "none";
  108.         return;
  109.     }
  110.     ajax = SelUsuario.creaAjax()
  111.     if (ajax==null) {
  112.         alert ("Tu navegador no soporta Ajax");
  113.         return;
  114.      }
  115. var url="SelecUsuarios.asp?q="+escape(str) + "&variable=" +obj2;
  116.     ajax.open("GET",url,true);
  117.     ajax.onreadystatechange = SelUsuario.Despliega;
  118.     //ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  119.             ajax.send(null);
  120.             return
  121. }
  122. },
  123.  
  124. Despliega: function () {
  125. var obj = document.getElementById("contenedor");
  126.    
  127.         if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
  128.                                         obj.innerHTML = "<p align='center'><img src='../images/cargando.gif' border='0px' widht='15px' height='15px'/></p>";
  129.             obj.style.display= "block";
  130.                 }
  131.  
  132.                 else if (ajax.readyState==4) {
  133.             if (ajax.status==200) {
  134.             obj.innerHTML = unescape(ajax.responseText);
  135.  
  136.             }else {
  137.                                     obj.innerHTML = "<p>Se ha producido un error</p>";
  138.             }
  139.  
  140.         if (obj.style.display == "none")  obj.style.display= "block";
  141.         }
  142. },
  143.  
  144. Seleccionar: function () {
  145. var ref = document.getElementById(this.id).getElementsByTagName('DIV');
  146. //alert(ref);
  147. for (var i = 0; i < ref.length; i++) {
  148.  
  149. SelUsuario.Evento(ref[i], 'click', function() {
  150. SelUsuario.Pegar(this.id);
  151. //alert(this.id);
  152. })  
  153.  
  154. SelUsuario.Evento(ref[i], 'mouseover',  function() {
  155. SelUsuario.Marcar(this.id);
  156. })
  157.  
  158. //SelUsuario.Evento(ref[i], 'mouseout',  function() {
  159. //SelUsuario.DesMarcar(this.id);
  160. //})
  161. }
  162. },
  163.  
  164. Pegar: function (valor) {
  165. //alert("el val " +valor);
  166. var obj = document.getElementById("contenedor")
  167.         document.getElementById("txt").value = valor;
  168.                 if (obj.style.display == "block"); obj.style.display= "none";      
  169. },
  170.  
  171.  
  172. Pegar2: function (ev) {
  173. var obj = document.getElementById("contenedor")
  174. var ref = obj.getElementsByTagName('DIV');
  175. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  176.  
  177. // enter 13 tab 9
  178. if ((keyCode == 13) || (keyCode == 9)) {
  179. //alert("enter")
  180.  
  181. for (var i = 0; i <= ref.length-1; i++) {
  182. if (ref[i].className == "seleccionado") {
  183.  
  184.         document.getElementById("txt").value = ref[i].id;
  185.         //window.focus();
  186.         if (obj.style.display == "block"); obj.style.display= "none";
  187. break;
  188. //alert(ref[i].id);
  189.  
  190.  
  191. }
  192. }
  193.  
  194. if (keyCode == 13) {
  195.     try{ // DOM;
  196.         ev.preventDefault();
  197.         }catch(e){ // iexplore;
  198.         ev.returnValue = false;
  199.         }
  200. }
  201.  
  202.  
  203. }  
  204. },
  205.  
  206. BajaOpt: function() {
  207. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  208. for (var i = 0; i <= ref.length-1; i++) {
  209. if (ref[i].className == "seleccionado") {
  210. ref[i].className = "deseleccionado";
  211. if (i < ref.length-1){
  212. i++;
  213. }else{
  214. i = 0;
  215. }
  216. //alert("Largo: " +(ref.length-1)+ " Valor: " +i);
  217. ref[i].className = "seleccionado"
  218. }
  219. }
  220. },
  221.  
  222. SubeOpt: function() {
  223. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  224. for (var i = 0; i <= ref.length-1; i++) {
  225. if (ref[i].className == "seleccionado") {
  226. ref[i].className = "deseleccionado";
  227. if (i < ref.length && i > 0){
  228. i--;
  229. }else{
  230. i = ref.length-1;
  231. }
  232. //alert("Largo: " +(ref.length-1)+ " Valor: " +i);
  233. ref[i].className = "seleccionado"
  234. }
  235. }
  236. },
  237.  
  238. Marcar: function (id) {
  239. var selecionado = document.getElementById(id);
  240. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  241. for (var i = 0; i <= ref.length-1; i++) {
  242. if (ref[i].id != id) {
  243. ref[i].className = "deseleccionado";
  244. selecionado.className = "seleccionado";
  245. }
  246. }
  247. },
  248.  
  249. //DesMarcar: function (id) {
  250. //var ref = document.getElementById(id);
  251. //alert(ref);
  252. //ref.className = "deseleccionado"
  253. //alert("el " +id);        
  254. //},
  255.  
  256.  
  257. Cerrar: function () {  
  258. var obj = document.getElementById("contenedor")
  259.             if (obj.style.display == "block"); obj.style.display= "none";  
  260.    
  261. }
  262. }
  263.  
  264. SelUsuario.Evento(window, 'load', SelUsuario.init);
  265. </script>
  266. </head>
  267. <body>
  268. <form method="post" action="">
  269. Nombre Usuario: <input name="txt" type="text" id="txt" tabindex="1" value="" size="40" autocomplete="off" />
  270. <div class="vink" style="margin:5px 0px 0px 10px">
  271. <div id="contenedor" class="capa" style="display:none;"></div></div>
  272. Filtrar: <select id="stock" name="stock">
  273.          <option selected>Solo con Stock</option>
  274.          <option>Sin Stock</option>
  275.           </select><br>
  276.  
  277. <div class="vink" style="margin:5px 0px 0px 10px">
  278. <div id="campo" class="capa" style="display:none;"></div></div>
  279.      
  280. <input type="submit" value="Enviar">
  281. </form>
  282. </body>
  283. </html>


SelecUsuarios.asp:

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <%' Option Explicit %>
  3. <% Response.Buffer=True %>
  4. <% On Error Resume Next  %>
  5. <%Response.charset="utf-8"%>
  6. <%
  7. Response.addHeader "pragma", "no-cache"
  8. Response.CacheControl = "Private"
  9. Response.Expires = -1000
  10. %>
  11. <%
  12. nombre = 0
  13.  
  14. usuario = CStr(Request.QueryString("q"))
  15. combox = CStr(Request.QueryString("variable"))
  16.  
  17. IF Len(usuario) >= 2 then
  18. set Cnn = Server.CreateObject("ADODB.Connection")
  19. set rs = Server.CreateObject ("ADODB.Recordset")
  20. Cnn.Open Session("cnx")
  21.  
  22. SQL="Select descrip FROM Producto WHERE descrip LIKE '"&usuario&"%' and stock >0 ORDER BY Descrip asc"
  23. set rs = Cnn.Execute(SQL)
  24. If not rs.eof then
  25. registros = rs.getrows()
  26. Else
  27. Response.Write "<p class=""deseleccionado""><strong>Sin resultados</strong></p>"
  28. Response.End ()
  29. End If
  30. rs.Close
  31.     set rs = nothing
  32.     Cnn.Close
  33.     set Cnn = nothing
  34. END IF
  35.  
  36. For i = 0 to Ubound(registros,2)
  37. If i = 0 then
  38. Response.Write "<div id="""& registros(nombre,i) &""" class=""seleccionado"">"& ResaltarSubStr(registros(nombre,i)) & "</div>"
  39. Else
  40. Response.Write "<div id="""& registros(nombre,i) &""" class="""">" & ResaltarSubStr(registros(nombre,i)) & "</div>"
  41. End If
  42. Next
  43.  
  44. ' ========= Funciones ===========
  45. Function ResaltarSubStr(texto)
  46. Dim objRegExp
  47.  
  48. Set objRegExp= New RegExp
  49. objRegExp.IgnoreCase = True
  50. 'objRegExp.Global = True
  51.  
  52. objRegExp.Pattern = "\b("&usuario&")+(\w)"
  53. texto = objRegExp.Replace(texto, "<strong>$1</strong>$2")
  54. Set objRegExp = Nothing
  55.  
  56.  ResaltarSubStr = texto
  57.  
  58. End Function
  59. ' ========= Fin Funciones ===========%>

El problema es que no recibo el valor seleccionado en el combobox....

De antemano muchas gracias

PD: Felices fiestas y año nuevo !!!
  #13 (permalink)  
Antiguo 30/12/2009, 06:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Fíjate que el al combo lo has nombrado

Cita:
name="stock"
y después ...

Cita:
var obj2 = document.getElementById("campo").value;
¿Ves el problema?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #14 (permalink)  
Antiguo 30/12/2009, 07:01
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

mmm cambie eso y nada!!!

lo deje :

Cita:
var obj2 = document.getElementById("stock").value;
que sera??

De antemano muchas gracias
  #15 (permalink)  
Antiguo 30/12/2009, 07:29
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

No hay ningún error. Solo que crees que debería ocurrir algo al recoger esa variable "combox" pero el problema es que no la estás usando. De tal modo, que no genera ningún cambio en el resultado al ataque a la bd

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #16 (permalink)  
Antiguo 30/12/2009, 07:57
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

pero no recibo el parámetro de consulta en SelecUsuarios.asp.....
la idea es recibir el valor del combobox y de esa forma que la consulta fuera:

con stock
sin stock

pero al verificarlo y hacerle un response.write...no recibo nada
aps...el combobox por defecto tiene el valor "con stock"
pero ninguno de los dos valores se reciben en la pagina que consulta a la bd

hago esto:

Cita:
response.write (" '"&combox&"' ")
y me aparece vacio
  #17 (permalink)  
Antiguo 30/12/2009, 08:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

No recordé que es un select, cambia esto

Cita:
var obj2 = document.getElementById("stock").value;
por esto otro

Cita:
var obj2 = document.getElementById("stock").options[document.getElementById("stock").selectedIndex].value;
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #18 (permalink)  
Antiguo 30/12/2009, 08:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

puxa compañero....muchas gracias por tu paciencia....cambie la variable y nada!!!

sera por esto? :
Cita:
var url="SelecUsuarios.asp?q="+escape(str) + "&variable=" +obj2;
despues la recojo
Cita:
combox = CStr(Request.QueryString("variable"))
sera ahi el error??? me sigue llegando el valor vacío

la funcion empieza quedo asi:

Cita:
Empieza: function (ev) {
var str = document.getElementById(this.id).value;
var obj = document.getElementById("contenedor");
var obj2 = document.getElementById("stock").options[document.getElementById("stock").selectedIndex].value;
var ref = obj.getElementsByTagName('DIV');
var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
De antemano muchas gracias

Última edición por darkmcloud; 30/12/2009 a las 08:51
  #19 (permalink)  
Antiguo 31/12/2009, 06:04
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Pero si no le tienes dado valores a los options!!!

Cita:
<option selected>Solo con Stock</option>
<option>Sin Stock</option>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #20 (permalink)  
Antiguo 31/12/2009, 07:01
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

mmm si le tengo valores a los options....al ver el formulario
se pueden elegir los valores solo con stock (predeterminado) y sin stock....

Este es el codigo del formulario:
Código ASP:
Ver original
  1. <form method="post" action="">
  2.  
  3. Usuario: <input name="txt" type="text" id="txt" tabindex="1" value="" size="40" autocomplete="off" />
  4. <div class="vink" style="margin:5px 0px 0px 10px">
  5.  
  6. <div id="contenedor" class="capa" style="display:none;"></div></div>
  7.  
  8. Filtrar: <select id="stock" name="stock">
  9.  
  10. <option selected>Solo con Stock</option>
  11. <option>Sin Stock</option>
  12. </select><br>
  13.  
  14. <div class="vink" style="margin:5px 0px 0px 10px">
  15. <div id="campo" class="capa" style="display:none;"></div></div>
  16. <input type="submit" value="Enviar">
  17. </form>
Qué más podrá ser ????
  #21 (permalink)  
Antiguo 31/12/2009, 08:00
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Veamos, ¿donde están los valores?. Si fuese manaña a esta hora, podría pensar; "Que resaca después de tantas birras!!" pero no es el caso

Sin valores
Cita:
Filtrar: <select id="stock" name="stock">
<option selected>Solo con Stock</option>
<option>Sin Stock</option>
</select>
Con valores
Cita:
Filtrar: <select id="stock" name="stock">
<option value="constock" selected>Solo con Stock</option>
<option value="sinstock">Sin Stock</option>
</select>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #22 (permalink)  
Antiguo 31/12/2009, 08:17
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

:apla uso:

jajajaja eso era Adler!!!!!!!!!!!!!!!!!

Muxas gracias compañero !!! te lo agradezco infinitamente!!

Mmm otra consulta espero no abusar de tu buena voluntad...jejejeje

Resulta que este formulario es de búsqueda de repuestos, y éstos tienen asociado una "FAMILIA" ....
Cómo se podría hacer para que cuando consultara por la descripcion del repuesto se rellenara automáticamete el campo de familia... o sea

la consulta sería :
Cita:
Select descripcion, familia FROM Producto WHERE descripcion LIKE ' "&usuario&"% ' and stock >0 ORDER BY Descrip asc
entonces la idea mía es que la familia fuera un campo de sólo lectura que al seleccionarlo se llenara automáticamente de acuerdo a la familia que corresponda.....

Gracias desde ya por toda la paciencia y buena voluntad que has tenido con mis consultas.....

PD: Feliz año nuevo!!
  #23 (permalink)  
Antiguo 02/01/2010, 07:02
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Veamos si es esto a lo que te refieres

Cita:
Despliega: function () {
var obj = document.getElementById("contenedor");
var obj2 = document.getElementById("fam");

if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
obj.innerHTML = "<p align='center'><img src='../images/cargando.gif' border='0px' widht='15px' height='15px'/></p>";
obj.style.display= "block";
}

else if (ajax.readyState==4) {
if (ajax.status==200) {

var division = unescape(ajax.responseText);
obj.innerHTML = division.split("-")[0];
obj2.innerHTML = division.spit("-")[1];

}else {
obj.innerHTML = "<p>Se ha producido un error</p>";
}

if (obj.style.display == "none") obj.style.display= "block";
}
},


<form method="post" action="">
Nombre Usuario: <input name="txt" type="text" id="txt" tabindex="1" value="" size="40" autocomplete="off" />
<div class="vink" style="margin:5px 0px 0px 10px">
<div id="contenedor" class="capa" style="display:none;"></div></div>
Filtrar: <select id="stock" name="stock">
<option selected>Solo con Stock</option>
<option>Sin Stock</option>
</select><br>

<div class="vink" style="margin:5px 0px 0px 10px">
<div id="campo" class="capa" style="display:none;"></div></div>

Familia: <input type="text" name="fam" id="fam" /><br />

<input type="submit" value="Enviar">
</form>

Cita:
nombre = 0
Dim familia
familia = ""

usuario = CStr(Request.QueryString("q"))
combox = CStr(Request.QueryString("variable"))

IF Len(usuario) >= 2 then
set Cnn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject ("ADODB.Recordset")
Cnn.Open Session("cnx")

SQL="Select descripcion, familia FROM Producto WHERE descripcion LIKE ' "&usuario&"% ' and stock >0 ORDER BY Descrip asc"
set rs = Cnn.Execute(SQL)
If not rs.eof then
registros = rs.getrows()
familia = rs.Fields("familia")
Else
Response.Write "<p class=""deseleccionado""><strong>Sin resultados</strong></p>"
Response.End ()
End If
rs.Close
set rs = nothing
Cnn.Close
set Cnn = nothing
END IF

For i = 0 to Ubound(registros,2)
If i = 0 then
Response.Write "<div id="""& registros(nombre,i) &""" class=""seleccionado"">"& ResaltarSubStr(registros(nombre,i)) & "</div>"
Else
Response.Write "<div id="""& registros(nombre,i) &""" class="""">" & ResaltarSubStr(registros(nombre,i)) & "</div>"
End If
Next

Response.Write "-" & familia
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #24 (permalink)  
Antiguo 02/01/2010, 15:26
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Respuesta: Ajax con ASP

buen trabajo Adler

Feliz Año
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #25 (permalink)  
Antiguo 03/01/2010, 07:24
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
buen trabajo Adler

Feliz Año
Esperemos que continue tal y como empezó
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #26 (permalink)  
Antiguo 04/01/2010, 07:30
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

mmm parece que algo salió mal .....no aparece la familia y aparece este error:

Cita:
Línea: 148
Caracter: 1
Error: el objeto no acepta esta propiedad o método
la línea del error es esta:
Cita:
var division = unescape(ajax.responseText);
obj.innerHTML = division.split("-")[0];
obj2.innerHTML = division.spit("-")[1];
la línea con negrita es el error

Lo demás hice todas las modificaciones que me indicaste Adler..

De antemano muchas gracias
  #27 (permalink)  
Antiguo 04/01/2010, 08:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

El único error que veo es este

Cita:
var division = unescape(ajax.responseText);
obj.innerHTML = division.split("-")[0];
obj2.innerHTML = division.split("-")[1];
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #28 (permalink)  
Antiguo 04/01/2010, 08:26
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

Ahora me aparece :

Cita:
Línea: 139
Caracter: 41
Error: Error desconocido en tiempo de ejecución

Cita:
if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
obj.innerHTML = "<p align='center'><img src='../images/cargando.gif' border='0px' widht='15px' height='15px'/></p>";
obj.style.display= "block";
esa es la linea 139

De antemano muchas gracias
  #29 (permalink)  
Antiguo 04/01/2010, 13:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ajax con ASP

Hola

Un error bastante típico en Ajax con IE. Prueba a quitar el párrafo ya que se trata de un problema con los elementos inline

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #30 (permalink)  
Antiguo 04/01/2010, 14:02
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Ajax con ASP

pero aunque quite esa linea no me rellena el segundo campo.....
mi idea es que cuando yo voy escribiendo me va dando las sugerencias cierto?
entonces me gustaría que cuando elija una de las sugerencias me rellene automáticamente el campo de familia.....pero con las modificaciones no pasa nada....

De antemano muchas gracias (por toda la colaboracion y tu paciencia Adler)
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 23:39.