{"id":1982,"date":"2012-03-02T14:50:43","date_gmt":"2012-03-02T14:50:43","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=1982"},"modified":"2014-12-30T21:43:10","modified_gmt":"2014-12-30T21:43:10","slug":"ajax-select","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/","title":{"rendered":"Selector cargando datos con ajax"},"content":{"rendered":"<p>En este art\u00edculo vamos a ver como se realiza un selector que al seleccionar una de los opciones muestra una tabla de sus datos utilizando las t\u00e9cnicas AJAX para no recargar completamente la p\u00e1gina reduciendo una petici\u00f3n al servidor.<\/p>\n<p>Para disponer de un selector de contenidos utilizando las t\u00e9cnicas AJAX lo primero que deberemos hacer es incluir en el &lt;head&gt; una funci\u00f3n AJAX que ser\u00e1 la que se encargar\u00e1 de abrir el fichero php y acceder al servidor sin recargar la p\u00e1gina mostrando los resultados.<\/p>\n<pre>&lt;script type=\"text\/javascript\"&gt;\r\nfunction showService(str) {\r\n\u00a0\u00a0\u00a0 if (str==\"\") {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 document.getElementById(\"txtHint\").innerHTML=\"\";\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 if (window.XMLHttpRequest) {\/\/ code for IE7+, Firefox, Chrome, Opera, Safari\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 xmlhttp=new XMLHttpRequest();\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 else {\/\/ code for IE6, IE5\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 xmlhttp.onreadystatechange=function() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if (xmlhttp.readyState==4 &amp;&amp; xmlhttp.status==200) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 document.getElementById(\"txtHint\").innerHTML=xmlhttp.responseText;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 xmlhttp.open(\"GET\",\"getservice.php?service=\"+str,true);\r\n\u00a0\u00a0\u00a0 xmlhttp.send();\r\n}\r\n&lt;\/script&gt;<\/pre>\n<p>La funci\u00f3n lo que realiza es recibir la id del registro a mostrar abriendo el fichero\u00bbgetservice.php\u00bb pas\u00e1ndole mediante el m\u00e9todo GET la id del registro.<\/p>\n<p>En el archivo php realizamos la conexi\u00f3n en la base de datos, realizamos una consulta de los datos del registro con la id enviada y mostramos la informaci\u00f3n mediante una tabla.<\/p>\n<pre>&lt;?php\r\nrequire('config.php');\r\n\r\n$service = $_GET['service'];\r\n\r\n$query = mysql_query(\"SELECT title, price, date_added, date_modified, status FROM services WHERE service_id = '\".$service.\"'\", $conexion);\r\n\r\necho \"&lt;table border='1'&gt;\r\n&lt;tr&gt;\r\n&lt;th&gt;Titulo&lt;\/th&gt;\r\n&lt;th&gt;Precio&lt;\/th&gt;\r\n&lt;th&gt;Fecha de registro&lt;\/th&gt;\r\n&lt;th&gt;Fecha de modificacion&lt;\/th&gt;\r\n&lt;th&gt;Estado&lt;\/th&gt;\r\n&lt;\/tr&gt;\";\r\n\r\nwhile($row = mysql_fetch_array($query)) {\r\n\r\n\u00a0\u00a0\u00a0 echo \"&lt;tr&gt;\";\r\n\u00a0\u00a0\u00a0 echo \"&lt;td&gt;\" . $row['title'] . \"&lt;\/td&gt;\";\r\n\u00a0\u00a0\u00a0 echo \"&lt;td&gt;\" . $row['price'] . \"&lt;\/td&gt;\";\r\n\u00a0\u00a0\u00a0 echo \"&lt;td&gt;\" . $row['date_added'] . \"&lt;\/td&gt;\";\r\n\u00a0\u00a0\u00a0 echo \"&lt;td&gt;\" . $row['date_modified'] . \"&lt;\/td&gt;\";\r\n\u00a0\u00a0\u00a0 echo \"&lt;td&gt;\" . $row['status'] . \"&lt;\/td&gt;\";\r\n\u00a0\u00a0\u00a0 echo \"&lt;\/tr&gt;\";\r\n}\r\n\r\necho \"&lt;\/table&gt;\";\r\n\r\nmysql_close($conexion);\r\n?&gt;<\/pre>\n<p>El formulario que debemos tener el &lt;body&gt; de nuestra p\u00e1gina ser\u00e1 algo como lo siguiente:<\/p>\n<pre>&lt;form&gt;\r\n\u00a0\u00a0\u00a0 &lt;select name=\"services\" onchange=\"showService(this.value)\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;option value=\"\"&gt;Seleccione un servicio...&lt;\/option&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;?php\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $query = mysql_query(\"SELECT * FROM TU_TABLA ORDER BY title asc\", $conexion);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 while($row = mysql_fetch_array($query)) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 echo '&lt;option value=\"'.$row['service_id'].'\"&gt;'.$row['title'].'&lt;\/option&gt;';\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ?&gt;\r\n\u00a0\u00a0\u00a0 &lt;\/select&gt;\r\n&lt;\/form&gt;<\/pre>\n<p>Mostramos un selector que al seleccionar una opci\u00f3n se llama a la funci\u00f3n AJAX pas\u00e1ndole la id del registro. Los registros a seleccionar son capturados de la base de datos<br \/>\n<a href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/ajax-select\/\">Ver ejemplo en funcionamiento<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo vamos a ver como se realiza un selector que al seleccionar una de los opciones muestra una tabla de sus datos utilizando las t\u00e9cnicas AJAX para no recargar completamente la p\u00e1gina reduciendo una petici\u00f3n al servidor. Para disponer de un selector de contenidos utilizando las t\u00e9cnicas AJAX lo primero que deberemos hacer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4517,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,3],"tags":[84,118,62],"class_list":["post-1982","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-php","tag-formularios","tag-onchange","tag-selects"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Selector cargando datos con ajax - Jose Aguilar Blog<\/title>\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=\"Selector cargando datos con ajax - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo vamos a ver como se realiza un selector que al seleccionar una de los opciones muestra una tabla de sus datos utilizando las t\u00e9cnicas AJAX para no recargar completamente la p\u00e1gina reduciendo una petici\u00f3n al servidor. Para disponer de un selector de contenidos utilizando las t\u00e9cnicas AJAX lo primero que deberemos hacer [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/\" \/>\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-02T14:50:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-12-30T21:43:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png\" \/>\n\t<meta property=\"og:image:width\" content=\"128\" \/>\n\t<meta property=\"og:image:height\" content=\"128\" \/>\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=\"2 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-select\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/\",\"name\":\"Selector cargando datos con ajax - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png\",\"datePublished\":\"2012-03-02T14:50:43+00:00\",\"dateModified\":\"2014-12-30T21:43:10+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png\",\"width\":128,\"height\":128},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Selector cargando datos con ajax\"}]},{\"@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":"Selector cargando datos con ajax - Jose Aguilar Blog","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":"Selector cargando datos con ajax - Jose Aguilar Blog","og_description":"En este art\u00edculo vamos a ver como se realiza un selector que al seleccionar una de los opciones muestra una tabla de sus datos utilizando las t\u00e9cnicas AJAX para no recargar completamente la p\u00e1gina reduciendo una petici\u00f3n al servidor. Para disponer de un selector de contenidos utilizando las t\u00e9cnicas AJAX lo primero que deberemos hacer [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-03-02T14:50:43+00:00","article_modified_time":"2014-12-30T21:43:10+00:00","og_image":[{"width":128,"height":128,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.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":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/","url":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/","name":"Selector cargando datos con ajax - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png","datePublished":"2012-03-02T14:50:43+00:00","dateModified":"2014-12-30T21:43:10+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/source-php-icon.png","width":128,"height":128},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/ajax-select\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Selector cargando datos con ajax"}]},{"@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\/1982","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=1982"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/1982\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/4517"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=1982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=1982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=1982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}