{"id":2406,"date":"2012-03-30T20:20:32","date_gmt":"2012-03-30T20:20:32","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=2406"},"modified":"2019-04-15T15:54:14","modified_gmt":"2019-04-15T15:54:14","slug":"autocompletar-campo-con-jquery-ajax-y-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/","title":{"rendered":"Autocompletar campo con jQuery, Ajax y PHP"},"content":{"rendered":"<p>Amplia tu conocimiento y obt\u00e9n un c\u00f3digo de ejemplo que te permite <strong>autocompletar<\/strong> un campo de texto con <strong>jQuery<\/strong>, <strong>Ajax<\/strong> y <strong>PHP<\/strong>.<\/p>\n<p>En el ejemplo en funcionamiento vamos a tener un campo de texto que al escribir en \u00e9l aparecen sugerencias (en el caso de que existan) para auto completar su valor. Para el aspecto del mismo nos vamos a apoyar en la tecnolog\u00eda <strong>Bootstrap 4<\/strong>.<\/p>\n<p>Partiremos de un formulario simple en el cual tenemos un campo de texto (input) en el que aparecer\u00e1n sugerencias a medida que se va escribiendo.<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/form.html\"><span class=\"kw2\">form<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;form-inline&quot;<\/span> <span class=\"kw3\">method<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;post&quot;<\/span> <span class=\"kw3\">action<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;#&quot;<\/span>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;input-group input-group-sm&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/input.html\"><span class=\"kw2\">input<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;search_query form-control&quot;<\/span> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text&quot;<\/span> <span class=\"kw3\">name<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;key&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;key&quot;<\/span> placeholder<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;Buscar...&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;input-group-btn&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;submit&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-info btn-flat&quot;<\/span>&gt;&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;fa fa-search&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/form.html\"><span class=\"kw2\">form<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;suggestions&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>De este formulario, tenemos que prestar especial atenci\u00f3n al id del input y al contenedor donde depositaremos mediante <strong>jQuery<\/strong> las sugerencias.<\/p>\n<p>En la cabecera o dentro de la etiqueta &lt;head&gt; o en una hoja de estilos podemos agregar el c\u00f3digo <strong>CSS<\/strong> espec\u00edfico que estamos usando para las sugerencias:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"css\" style=\"font-family:monospace;\"><span class=\"re0\">#suggestions<\/span> <span class=\"br0\">&#123;<\/span>\n    box-shadow<span class=\"sy0\">:<\/span> <span class=\"re3\">2px<\/span> <span class=\"re3\">2px<\/span> <span class=\"re3\">8px<\/span> 0 rgba<span class=\"br0\">&#40;<\/span>0<span class=\"sy0\">,<\/span>0<span class=\"sy0\">,<\/span>0<span class=\"sy0\">,<\/span>.2<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">height<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">auto<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">position<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">absolute<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">45px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">z-index<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">9999<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">width<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">206px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re0\">#suggestions<\/span> <span class=\"re1\">.suggest-element<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">background-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#EEEEEE<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">border-top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">1px<\/span> <span class=\"kw2\">solid<\/span> <span class=\"re0\">#d6d4d4<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">cursor<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">pointer<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">8px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">width<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\"><span class=\"nu0\">100<\/span>%<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">float<\/span><span class=\"sy0\">:<\/span> <span class=\"kw1\">left<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>Tambi\u00e9n en la cabecera o dentro de la etiqueta &lt;head&gt; o incluso justo antes de la etiqueta de cierre de &lt;\/body&gt; podemos agregar lo siguiente:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span class=\"sy0\">&lt;<\/span>script src<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;https:\/\/code.jquery.com\/jquery-3.2.1.js&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span>\n<span class=\"sy0\">&lt;<\/span>script<span class=\"sy0\">&gt;<\/span>\n$<span class=\"br0\">&#40;<\/span>document<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">ready<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#key'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'keyup'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw2\">var<\/span> key <span class=\"sy0\">=<\/span> $<span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\t\t\n        <span class=\"kw2\">var<\/span> dataString <span class=\"sy0\">=<\/span> <span class=\"st0\">'key='<\/span><span class=\"sy0\">+<\/span>key<span class=\"sy0\">;<\/span>\n\t$.<span class=\"me1\">ajax<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span>\n            type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;POST&quot;<\/span><span class=\"sy0\">,<\/span>\n            url<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;ajax.php&quot;<\/span><span class=\"sy0\">,<\/span>\n            data<span class=\"sy0\">:<\/span> dataString<span class=\"sy0\">,<\/span>\n            success<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>data<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n                <span class=\"co1\">\/\/Escribimos las sugerencias que nos manda la consulta<\/span>\n                $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#suggestions'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">fadeIn<\/span><span class=\"br0\">&#40;<\/span>1000<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">html<\/span><span class=\"br0\">&#40;<\/span>data<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                <span class=\"co1\">\/\/Al hacer click en alguna de las sugerencias<\/span>\n                $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.suggest-element'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'click'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n                        <span class=\"co1\">\/\/Obtenemos la id unica de la sugerencia pulsada<\/span>\n                        <span class=\"kw2\">var<\/span> id <span class=\"sy0\">=<\/span> $<span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">attr<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'id'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                        <span class=\"co1\">\/\/Editamos el valor del input con data de la sugerencia pulsada<\/span>\n                        $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#key'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span>$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#'<\/span><span class=\"sy0\">+<\/span>id<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">attr<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'data'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                        <span class=\"co1\">\/\/Hacemos desaparecer el resto de sugerencias<\/span>\n                        $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#suggestions'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">fadeOut<\/span><span class=\"br0\">&#40;<\/span>1000<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                        <span class=\"kw3\">alert<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Has seleccionado el '<\/span><span class=\"sy0\">+<\/span>id<span class=\"sy0\">+<\/span><span class=\"st0\">' '<\/span><span class=\"sy0\">+<\/span>$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#'<\/span><span class=\"sy0\">+<\/span>id<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">attr<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'data'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                        <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span>\n                <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"br0\">&#125;<\/span>\n        <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> \n<span class=\"sy0\">&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span><\/pre><\/div><\/div>\n<p>Ahora la p\u00e1gina estar\u00e1 a la espera observando que se escribe en el campo con id=\u00bbkey\u00bb para mostrar sugerencias.<\/p>\n<p>Utilizamos la funci\u00f3n <em>keyup<\/em> de <strong>jQuery<\/strong> para capturar los eventos del teclado en este campo. Obtenemos el valor del input y se lo pasamos al archivo \u00abajax.php\u00bb mediante la t\u00e9cnica <strong>Ajax<\/strong>. La parte m\u00e1s interesante est\u00e1 en el success, observa los comentarios para entenderlo.<\/p>\n<p>Este archivo <strong>PHP<\/strong> se encarga de conectar con la base de datos y generar la consulta <strong>SQL<\/strong> para obtener los productos que contengan parte de los caracteres introducidos en el campo de texto.<\/p>\n<div id=\"wpshdo_4\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_4\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_4\"><\/a><a id=\"wpshat_4\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_4\"  onClick=\"javascript:wpsh_toggleBlock(4)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_code(4)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_print(4)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_4\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_SERVER'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'localhost'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_SERVER_USERNAME'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'YOUR DATA BASE USERNAME'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_SERVER_PASSWORD'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'YOUR DATA BASE PASSWORD'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_DATABASE'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'YOUR DATA BASE NAME'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$connexion<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> mysqli<span class=\"br0\">&#40;<\/span>DB_SERVER<span class=\"sy0\">,<\/span> DB_SERVER_USERNAME<span class=\"sy0\">,<\/span> DB_SERVER_PASSWORD<span class=\"sy0\">,<\/span> DB_DATABASE<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$html<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$key<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$_POST<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'key'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$connexion<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span>\n    <span class=\"st_h\">'SELECT * FROM product p \n    LEFT JOIN product_lang pl ON (pl.id_product = p.id_product AND pl.id_lang = 1) \n    WHERE active = 1 \n    AND pl.name LIKE &quot;%'<\/span><span class=\"sy0\">.<\/span><a href=\"http:\/\/www.php.net\/strip_tags\"><span class=\"kw3\">strip_tags<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$key<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'%&quot;\n    ORDER BY date_upd DESC LIMIT 0,5'<\/span>\n<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">num_rows<\/span> <span class=\"sy0\">&gt;<\/span> 0<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$row<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fetch_assoc<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>                \n        <span class=\"re0\">$html<\/span> <span class=\"sy0\">.=<\/span> <span class=\"st_h\">'&lt;div&gt;&lt;a class=&quot;suggest-element&quot; data=&quot;'<\/span><span class=\"sy0\">.<\/span><a href=\"http:\/\/www.php.net\/utf8_encode\"><span class=\"kw3\">utf8_encode<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$row<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'name'<\/span><span class=\"br0\">]<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot; id=&quot;product'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$row<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'id_product'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot;&gt;'<\/span><span class=\"sy0\">.<\/span><a href=\"http:\/\/www.php.net\/utf8_encode\"><span class=\"kw3\">utf8_encode<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$row<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'name'<\/span><span class=\"br0\">]<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&lt;\/a&gt;&lt;\/div&gt;'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span>\n<span class=\"kw1\">echo<\/span> <span class=\"re0\">$html<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>En este c\u00f3digo <strong>PHP<\/strong> lo que estamos haciendo es conectar con la base de datos, recoger el texto escrito en el campo de texto y hacer la consulta para buscar la informaci\u00f3n en las tablas que queremos de la base de datos. Este archivo retorna en formato <strong>HTML<\/strong> la lista de productos sugeridos.<\/p>\n<p>(*) Nota: Si te has descargado la demo deber\u00e1s cambiar los par\u00e1metros de conexi\u00f3n establecidos en el archivo \u00abajax.php\u00bb y luego realizar la consulta seg\u00fan sea la base de datos que desees emplear.<\/p>\n<p>En el ejemplo que estamos ilustrando jugamos con una base de datos de ejemplo en la que mostramos servicios o productos.<\/p>\n<p class=\"text-center\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/jquery\/autocomplete\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/jquery\/autocomplete\/autocomplete.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Amplia tu conocimiento y obt\u00e9n un c\u00f3digo de ejemplo que te permite autocompletar un campo de texto con jQuery, Ajax y PHP. En el ejemplo en funcionamiento vamos a tener un campo de texto que al escribir en \u00e9l aparecen sugerencias (en el caso de que existan) para auto completar su valor. Para el aspecto [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,149,5,3],"tags":[97,68,79],"class_list":["post-2406","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-destacados","category-jquery","category-php","tag-autocomplete","tag-buscadores","tag-inputs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Autocompletar campo con jQuery, Ajax y PHP - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite agregar a tu p\u00e1gina Web un campo de texto que al escribir en \u00e9l aparece un listado para autocompletar.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Autocompletar campo con jQuery, Ajax y PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite agregar a tu p\u00e1gina Web un campo de texto que al escribir en \u00e9l aparece un listado para autocompletar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-30T20:20:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-15T15:54:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/\",\"name\":\"Autocompletar campo con jQuery, Ajax y PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png\",\"datePublished\":\"2012-03-30T20:20:32+00:00\",\"dateModified\":\"2019-04-15T15:54:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Tutorial y c\u00f3digo de ejemplo que te permite agregar a tu p\u00e1gina Web un campo de texto que al escribir en \u00e9l aparece un listado para autocompletar.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Autocompletar campo con jQuery, Ajax y PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Autocompletar campo con jQuery, Ajax y PHP - Jose Aguilar Blog","description":"Tutorial y c\u00f3digo de ejemplo que te permite agregar a tu p\u00e1gina Web un campo de texto que al escribir en \u00e9l aparece un listado para autocompletar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Autocompletar campo con jQuery, Ajax y PHP - Jose Aguilar Blog","og_description":"Tutorial y c\u00f3digo de ejemplo que te permite agregar a tu p\u00e1gina Web un campo de texto que al escribir en \u00e9l aparece un listado para autocompletar.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-03-30T20:20:32+00:00","article_modified_time":"2019-04-15T15:54:14+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/","name":"Autocompletar campo con jQuery, Ajax y PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png","datePublished":"2012-03-30T20:20:32+00:00","dateModified":"2019-04-15T15:54:14+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Tutorial y c\u00f3digo de ejemplo que te permite agregar a tu p\u00e1gina Web un campo de texto que al escribir en \u00e9l aparece un listado para autocompletar.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/autocompletar-campo-con-jquery-ajax-y-php.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/autocompletar-campo-con-jquery-ajax-y-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Autocompletar campo con jQuery, Ajax y PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/2406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=2406"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/2406\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7284"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=2406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=2406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=2406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}