hice un buscador de productos, pero lo hace autocompletando.
Programe una funcion en el onKeyUp de una caja de texto y llama a a funcion requestj
Código Javascript:
Primer el mensaje 'buscando...' nunca apareceVer original
function ajax(){ var ajax = null; if (window.XMLHttpRequest){ try{ ajax = new XMLHttpRequest(); } catch(e) {} } else if (window.ActiveXObject){ try{ ajax = new ActiveXObject("Msxm12.XMLHTTP"); } catch (e){ try{ ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } return ajax; } var myAjax2 = ajax(); function requestj(str) { myAjax2.open("POST", "ajax_entrada.php"); // nodos myAjax2.onreadystatechange = resultj_update; myAjax2.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); myAjax2.send("search="+str); } function resultj_update(){ if (myAjax2.readyState == 4) { //alert(myAjax2.status); if (myAjax2.status==200){ var liste = myAjax2.responseText; document.getElementById("tag_update").innerHTML = liste; document.getElementById("tag_update").style.display = "block"; } }else{ if (myAjax2.status==200){ document.getElementById("tag_update").innerHTML = 'Buscando...'; document.getElementById("tag_update").style.display = "block"; } } }
Oprimo una tecla y no sale nada, despues de mas o menos 30 segundo o 1 minuto aparece la lista con los resultados
este es mi archivo ajax_entrada.php
Código PHP:
La tabla products tiene mas de 5000 registros, por eso envio un limit para que no me traiga todo lo que encuentra, si no los primeros 20...Ver original
<?php require_once('conf.php'); $b=new subbase(IPSERVIDORBD,USUARIOBD,CLAVEBD,BD); }else{ $search =''; } $sql = "SELECT p.products_id, COALESCE(p.products_name,'Sin descripcion') AS products_name, t.tax_rate, COALESCE(c.average_cost,0) * (t.tax_rate / 100) AS iva FROM products_description p LEFT JOIN products pc ON pc.products_id = p.products_id LEFT JOIN tax_class tc ON tc.tax_class_id = pc.products_tax_class_id LEFT JOIN tax_rates t ON tc.tax_class_id = t.tax_class_id LEFT JOIN centro_costo_stock c ON p.products_id = c.id_product WHERE p.products_name LIKE '%".$search."%' GROUP BY p.products_id ORDER BY p.products_name LIMIT 0,20"; if ($tabla=$b->sub_tuplas($sql)){ echo '<ul><li><a href="#"><img src="images/close.png" alt="cerrar" title="cerrar" onclick="document.getElementById('tag_update').innerHTML = ''"/></a></li>'; foreach ($tabla as $fila){ echo '<li><a href="#" onclick="selected(this.innerHTML);">'.htmlentities($fila['products_name']).' | '.htmlentities($fila['products_id']).' | '.htmlentities($fila['costo']).' | '.htmlentities(number_format($fila['tax_rate'],2)).'</a></li>'; } echo '</ul>'; } $b->cerrar_conexion();
Mi error puede estar en la consulta???? o es error en la forma en que hago el llamado asincrono???
No pido que me hagan la consulta ni nada de eso, solo que me aconsejen un poco ya que nunca he trabajado con tantos datos, Muchas Gracias