{"id":6866,"date":"2017-06-09T14:36:24","date_gmt":"2017-06-09T14:36:24","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=6866"},"modified":"2019-07-17T11:45:03","modified_gmt":"2019-07-17T11:45:03","slug":"ajax-vs-json-respuesta-multiple","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/","title":{"rendered":"Ajax vs Json &#8211; respuesta m\u00faltiple"},"content":{"rendered":"<p><strong>Ajax<\/strong> son las siglas de <em>Asynchronous JavaScript And XML<\/em> y es una tecnolog\u00eda que permite a una p\u00e1gina web actualizarse de forma din\u00e1mica sin\u00a0recargarse completamente.<\/p>\n<p><strong>JavaScript<\/strong> es el encargado de comunicarse con el servidor enviando y recibiendo datos desde la p\u00e1gina web.<\/p>\n<p>En el servidor la solicitud es procesada mediante <strong>PHP<\/strong> y se env\u00eda una respuesta que es interpretada de nuevo por <strong>JavaScript<\/strong> en la p\u00e1gina web.<\/p>\n<p><strong>JSON<\/strong> (<em>JavaScript Object Notation<\/em>) surgi\u00f3 m\u00e1s tarde aportando m\u00e1s ligereza y con una notaci\u00f3n m\u00e1s simple convirti\u00e9ndose en el formato m\u00e1s utilizado para el intercambio de datos cu\u00e1ndo se trabaja con <strong>Ajax<\/strong>. Ver m\u00e1s informaci\u00f3n sobre <a href=\"http:\/\/json.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">JSON<\/a>.<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax_jquery_json.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6869\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax_jquery_json.jpg\" alt=\"\" width=\"564\" height=\"148\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax_jquery_json.jpg 564w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax_jquery_json-300x79.jpg 300w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><\/a><\/p>\n<p>Una de las principales ventajas de utilizar <strong>JSON<\/strong> en las llamadas <strong>AJAX<\/strong> es que resulta muy sencillo pasar los datos de un array del servidor y utilizarlos en el\u00a0<em>success<\/em> de la llamada. Esto lo entender\u00e1s mejor viendo el c\u00f3digo del ejemplo.<\/p>\n<p>En el ejemplo en funcionamiento que hemos preparado tenemos un selector de productos que al seleccionar uno te muestra alguna informaci\u00f3n del mismo en un contenedor que tenemos preparado.<\/p>\n<p>Partimos de un fichero principal en el que a\u00f1adiremos nuestra consulta a la base de datos y nuestro selector de productos en un formulario:<\/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=\"php\" style=\"font-family:monospace;\">&lt;form action=&quot;&quot;&gt;\n    &lt;label for=&quot;id_product&quot;&gt;Producto&lt;\/label&gt;\n    &lt;select id=&quot;id_product&quot; class=&quot;form-control&quot;&gt;\n        &lt;option value=&quot;0&quot;&gt;Selecciona producto...&lt;\/option&gt;\n        <span class=\"kw2\">&lt;?php<\/span>\n        <span class=\"kw1\">require<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'config.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n        <span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$conexion<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span>\n            <span class=\"st0\">&quot;SELECT p.id_product, pl.name FROM `ps_product` p\n                LEFT JOIN product_lang pl ON (pl.id_product = p.id_product AND pl.id_lang = 1)\n                WHERE id_category_default != 18 AND id_category_default != 20\n                ORDER BY name ASC&quot;<\/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=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;option value=&quot;'<\/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;\/option&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"br0\">&#125;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n        <span class=\"sy1\">?&gt;<\/span> \n    &lt;\/select&gt;\n&lt;\/form&gt;\n&lt;div class=&quot;result&quot;&gt;&lt;\/div&gt;<\/pre><\/div><\/div>\n<p>Revisando un poco el c\u00f3digo, te dar\u00e1s cuenta que tenemos un selector al cual le estamos a\u00f1adiendo opciones de una tabla de nuestra base de datos. Incluimos el archivo <em>config.php<\/em> para conectar con nuestra base de datos y ejecutando una consulta que nos retornar\u00e1 varios registros, en este caso, productos que depositamos en las opciones de nuestro selector.<\/p>\n<p>El \u00faltimo contenedor o div con class=\u00bbresult\u00bb aunque te parezca extra\u00f1o que est\u00e9 vac\u00edo ser\u00e1 nuestro contenedor para a\u00f1adir el resultado.<\/p>\n<p>En la cabecera de este archivo o p\u00e1gina a\u00f1adiremos la librer\u00eda <strong>jQuery<\/strong> entre otras y la captura del evento que controla cuando cambia el valor de nuestro selector:<\/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=\"javascript\" style=\"font-family:monospace;\"><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\">'#id_product'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'change'<\/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> dataString <span class=\"sy0\">=<\/span> <span class=\"st0\">'id_product='<\/span><span class=\"sy0\">+<\/span>$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'select#id_product'<\/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>\n        $.<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            dataType<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;json&quot;<\/span><span class=\"sy0\">,<\/span>\n            success<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>response<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n                $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.result'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">empty<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>response.<span class=\"me1\">active<\/span> <span class=\"sy0\">!=<\/span> <span class=\"st0\">&quot;1&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n                    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.result'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">append<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'&lt;p class=&quot;alert alert-error&quot;&gt;Produto no disponible&lt;\/p&gt;'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                <span class=\"br0\">&#125;<\/span>\n                <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n                    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.result'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">append<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'&lt;h1&gt;'<\/span><span class=\"sy0\">+<\/span>response.<span class=\"kw3\">name<\/span><span class=\"sy0\">+<\/span><span class=\"st0\">'&lt;\/h1&gt;'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.result'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">append<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'&lt;p&gt;Referencia: &lt;strong&gt;'<\/span><span class=\"sy0\">+<\/span>response.<span class=\"me1\">reference<\/span><span class=\"sy0\">+<\/span><span class=\"st0\">'&lt;\/strong&gt;&lt;\/p&gt;'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.result'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">append<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'&lt;p style=&quot;color:red;&quot;&gt;Version: '<\/span><span class=\"sy0\">+<\/span>response.<span class=\"me1\">version<\/span><span class=\"sy0\">+<\/span><span class=\"st0\">'&lt;\/p&gt;'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.result'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">append<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'&lt;p style=&quot;color:green;&quot;&gt;Compatibilidad: '<\/span><span class=\"sy0\">+<\/span>response.<span class=\"me1\">compatibility<\/span><span class=\"sy0\">+<\/span><span class=\"st0\">'&lt;\/p&gt;'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                <span class=\"br0\">&#125;<\/span>\n&nbsp;\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>En esta parte del c\u00f3digo est\u00e1 la clave del asunto. Este c\u00f3digo <strong>JavaScript<\/strong> captura el cambio de nuestro selector para hacer una llamada <strong>Ajax<\/strong> que nos retornar\u00e1 un objeto tipo <strong>JSON<\/strong>. Para ello es importante declarar en la llamada <strong>Ajax<\/strong> que el retorno ser\u00e1 <strong>JSON<\/strong> utilizando:<\/p>\n<pre>dataType: \"json\",<\/pre>\n<p>En el <em>success<\/em> puedes ver que la respuesta la estamos tratando como un objeto del cual recibimos diversas informaciones como por ejemplo el nombre, la referencia, entre otros datos que procesaremos. Esto resulta ser muy \u00fatil cuando necesitas <strong>recibir del servidor m\u00e1s de una respuesta<\/strong>.<\/p>\n<p>El archivo <em>ajax.php<\/em> que utilizamos para nuestra llamada <strong>Ajax<\/strong> contiene el c\u00f3digo que se ejecuta en el servidor sin recargar la p\u00e1gina.<\/p>\n<p>Contiene el siguiente c\u00f3digo:<\/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=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw1\">require_once<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'config.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$id_product<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>int<span class=\"br0\">&#41;<\/span><span class=\"re0\">$_POST<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'id_product'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$conexion<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span>\n    <span class=\"st_h\">'SELECT * FROM `ps_product` p\n        LEFT JOIN ps_product_lang pl ON (pl.id_product = p.id_product AND pl.id_lang = 1)\n        WHERE p.id_product = '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$id_product<\/span>\n<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$data<\/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=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$row<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span>\n    <span class=\"st_h\">'name'<\/span> <span class=\"sy0\">=&gt;<\/span> <a href=\"http:\/\/www.php.net\/utf8_encode\"><span class=\"kw3\">utf8_encode<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$data<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'name'<\/span><span class=\"br0\">]<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n    <span class=\"st_h\">'reference'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$data<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'reference'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">,<\/span>\n    <span class=\"st_h\">'version'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$data<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'version'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">,<\/span>\n    <span class=\"st_h\">'compatibility'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$data<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'compatibility'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">,<\/span>\n    <span class=\"st_h\">'active'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$data<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'active'<\/span><span class=\"br0\">]<\/span>\n<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/is_array\"><span class=\"kw3\">is_array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$row<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">echo<\/span> <a href=\"http:\/\/www.php.net\/json_encode\"><span class=\"kw3\">json_encode<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$row<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>Incluimos el archivo <em>config.php<\/em> para conectar con nuestra base de datos para obtener m\u00e1s informaci\u00f3n sobre el producto seleccionado.<\/p>\n<p>Al final de todo retornamos el array con toda la informaci\u00f3n sobre el producto\u00a0utilizando la funci\u00f3n json_decode().<\/p>\n<p>De esta forma, en el <em>success<\/em> de nuestro <strong>Ajax<\/strong> podremos usar la respuesta como un objeto que contiene m\u00faltiple informaci\u00f3n.<\/p>\n<p>Ahora solo te queda saber que contiene el archivo config.php. Tan solo estamos conectando a la base de datos con MySQLi:<\/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<span class=\"re0\">$conexion<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> mysqli<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'localhost'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'USUARIO DE TU BASE DE DATOS'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'CONTRASE\u00d1A DE TU BASE DE DATOS'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'NOMBRE DE TU BASE DE DATOS'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>\u00bfTe ha resultado interesante? Env\u00edanos tu comentario.<\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/jquery\/ajax-json\/\" 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\/ajax-json\/ajax-json.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.<\/p>\n","protected":false},"author":1,"featured_media":7361,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,5],"tags":[84,62],"class_list":["post-6866","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-jquery","tag-formularios","tag-selects"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ajax vs Json - respuesta m\u00faltiple - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.\" \/>\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=\"Ajax vs Json - respuesta m\u00faltiple - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/\" \/>\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=\"2017-06-09T14:36:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-17T11:45:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.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=\"5 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\/ajax-vs-json-respuesta-multiple\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/\",\"name\":\"Ajax vs Json - respuesta m\u00faltiple - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.png\",\"datePublished\":\"2017-06-09T14:36:24+00:00\",\"dateModified\":\"2019-07-17T11:45:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ajax vs Json &#8211; respuesta m\u00faltiple\"}]},{\"@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":"Ajax vs Json - respuesta m\u00faltiple - Jose Aguilar Blog","description":"Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.","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":"Ajax vs Json - respuesta m\u00faltiple - Jose Aguilar Blog","og_description":"Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2017-06-09T14:36:24+00:00","article_modified_time":"2019-07-17T11:45:03+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.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":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/","url":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/","name":"Ajax vs Json - respuesta m\u00faltiple - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.png","datePublished":"2017-06-09T14:36:24+00:00","dateModified":"2019-07-17T11:45:03+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Descubre el poder de la respuesta m\u00faltiple en llamadas Ajax de tipo json. Ejemplo con productos reales y un selector din\u00e1mico que muestra m\u00e1s informaci\u00f3n del elemento seleccionado.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/06\/ajax-vs-json-respuesta-multiple.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-vs-json-respuesta-multiple\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ajax vs Json &#8211; respuesta m\u00faltiple"}]},{"@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\/6866","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=6866"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7361"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=6866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=6866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=6866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}