{"id":5769,"date":"2013-01-10T19:46:11","date_gmt":"2013-01-10T19:46:11","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=5769"},"modified":"2019-04-08T10:34:08","modified_gmt":"2019-04-08T10:34:08","slug":"validar-formulario-con-jquery-validate-procesar-con-ajax","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/","title":{"rendered":"Validar formulario con jQuery Validate y procesar con Ajax"},"content":{"rendered":"<p>Un aspecto importante que da m\u00e1s profesionalidad a nuestras Webs es validar los formularios en vivo (<strong>jQuery Validate<\/strong>).<\/p>\n<p>La validaci\u00f3n de un formulario se puede realizar en el servidor tras enviar los datos o en el cliente antes de enviar. En este art\u00edculo vamos a ver como validar un formulario en el cliente antes de enviar los datos con <strong>jQuery Validate<\/strong> y procesarlos en el servidor mediante las t\u00e9cnica <strong>Ajax<\/strong> sin recargar la p\u00e1gina.<\/p>\n<p>Es probable que usando solamente <strong>jQuery<\/strong> no puedas crear f\u00e1cilmente las funciones para validar los campos de tus formularios. <strong>jQuery Validate<\/strong> es una biblioteca est\u00e1ndar de m\u00e9todos de validaci\u00f3n (como correos electr\u00f3nicos, url, n\u00fameros de tarjeta, etc.) que te puede ahorrar mucho trabajo en las validaciones de tus formularios.<\/p>\n<p>Este plugin pueede ser muy \u00fatil cuando necesitas establecer diferentes formas de especificar las reglas de validaci\u00f3n de acuerdo con el entorno del lado del servidor y no quieres reinventar la rueda.<\/p>\n<p>Hay muchas soluciones no basadas en jQuery para validar los formularios pero estoy seguro que dejar\u00e1s de usarlas si acabas conociendo <strong>jQuery Form Validation<\/strong> que no es m\u00e1s que uno de los plugins jQuery m\u00e1s antiguos para la validaci\u00f3n de datos (comenz\u00f3 en 2006) y ha demostrado su eficacia en proyectos de todo el mundo.<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5770 size-full\" title=\"jQuery Validate\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation.jpg\" alt=\"jQuery Validate\" width=\"590\" height=\"250\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation.jpg 590w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-300x127.jpg 300w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/a><\/p>\n<h2>C\u00f3digo HTML dentro del cuerpo de la p\u00e1gina<\/h2>\n<p>Para validar un formulario con <strong>jQuery Validate<\/strong> deberemos agregar en el &lt;body&gt; de nuestra p\u00e1gina un formulario HTML simple como por ejemplo el siguiente:<\/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\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;alert alert-success&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;alert&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;display: none;&quot;<\/span>&gt;<\/span><span class=\"sc1\">&amp;nbsp;<\/span><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;<a href=\"http:\/\/december.com\/html\/4\/element\/form.html\"><span class=\"kw2\">form<\/span><\/a> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;contact-form&quot;<\/span> <span class=\"kw3\">method<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;post&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;form-group&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/label.html\"><span class=\"kw2\">label<\/span><\/a> <span class=\"kw3\">for<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;name&quot;<\/span>&gt;<\/span>Nombre<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/label.html\"><span class=\"kw2\">label<\/span><\/a>&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\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;form-control&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;name&quot;<\/span> <span class=\"kw3\">name<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;name&quot;<\/span> placeholder<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;Introduce tu nombre&quot;<\/span>&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&nbsp;\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;form-group&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/label.html\"><span class=\"kw2\">label<\/span><\/a> <span class=\"kw3\">for<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;email&quot;<\/span>&gt;<\/span>Email<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/label.html\"><span class=\"kw2\">label<\/span><\/a>&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\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;email&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;form-control&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;email&quot;<\/span> <span class=\"kw3\">name<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;email&quot;<\/span> aria-describedby<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;emailHelp&quot;<\/span> placeholder<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;Introduce tu email&quot;<\/span>&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&nbsp;\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;form-group&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/label.html\"><span class=\"kw2\">label<\/span><\/a> <span class=\"kw3\">for<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;message&quot;<\/span>&gt;<\/span>Mensaje<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/label.html\"><span class=\"kw2\">label<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/textarea.html\"><span class=\"kw2\">textarea<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;form-control&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;message&quot;<\/span> <span class=\"kw3\">name<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;message&quot;<\/span> <span class=\"kw3\">rows<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;3&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/textarea.html\"><span class=\"kw2\">textarea<\/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&nbsp;\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;form-group&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;btn btn-primary submit&quot;<\/span> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;submit&quot;<\/span> <span class=\"kw3\">value<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;Enviar&quot;<\/span> <span class=\"sy0\">\/<\/span>&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><\/pre><\/div><\/div>\n<p>No vamos a hacer mucho incapi\u00e9 en la maquetaci\u00f3n o aspecto que estamos empleando. Tan solo vamos a informar que estamos utilizando la tecnolog\u00eda <strong>Bootstrap 4<\/strong> para ahorrar trabajo.<\/p>\n<p>Se trata de un formulario simple con tres campos: nombre, email y mensaje. Tiene un bot\u00f3n de tipo submit y un contenedor con id=\u00bbalert\u00bb para depositar la respuesta que retorna la llamada <strong>Ajax<\/strong>.<\/p>\n<h2>C\u00f3digo jQuery que incluye el plugin jQuery Validate y realiza la llamada<\/h2>\n<p>Dentro de la etiqueta &lt;head&gt; deberemos incluir la librer\u00eda jQuery, el plugin jQuery Validate y su llamada:<\/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;\">&lt;script src=&quot;https:\/\/code.jquery.com\/jquery-3.2.1.js&quot;&gt;&lt;\/script&gt;\n&lt;script src=&quot;js\/jquery.form.js&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;\n&lt;script src=&quot;js\/jquery.validate.js&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;\n<span class=\"sy0\">&lt;<\/span>script type<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text\/javascript&quot;<\/span><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\">&quot;#contact-form&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">validate<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span>\n        event<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;blur&quot;<\/span><span class=\"sy0\">,<\/span>rules<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><span class=\"st0\">'name'<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;required&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">'email'<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;required email&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">'message'<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;required&quot;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n        messages<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><span class=\"st0\">'name'<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Por favor indica tu nombre&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">'email'<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Por favor, indica una direcci&amp;oacute;n de e-mail v&amp;aacute;lida&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">'message'<\/span><span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Por favor, dime algo!&quot;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n        debug<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span>errorElement<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;label&quot;<\/span><span class=\"sy0\">,<\/span>\n        submitHandler<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>form<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n            $<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#alert&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">show<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            $<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#alert&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">html<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;&lt;img src='images\/ajax-loader.gif' style='vertical-align:middle;margin:0 10px 0 0' \/&gt;&lt;strong&gt;Enviando mensaje...&lt;\/strong&gt;&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            setTimeout<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\">'#alert'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">fadeOut<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'slow'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> 5000<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;send.php&quot;<\/span><span class=\"sy0\">,<\/span>\n                data<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;name=&quot;<\/span><span class=\"sy0\">+<\/span>escape<span class=\"br0\">&#40;<\/span>$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#name'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">+<\/span><span class=\"st0\">&quot;&amp;email=&quot;<\/span><span class=\"sy0\">+<\/span>escape<span class=\"br0\">&#40;<\/span>$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#email'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">+<\/span><span class=\"st0\">&quot;&amp;message=&quot;<\/span><span class=\"sy0\">+<\/span>escape<span class=\"br0\">&#40;<\/span>$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#message'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n                success<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>msg<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n                    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#alert&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">html<\/span><span class=\"br0\">&#40;<\/span>msg<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                    document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;name&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">value<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n                    document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;email&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">value<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n                    document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;message&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">value<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n                    setTimeout<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\">'#alert'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">fadeOut<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'slow'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n                    <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> 5000<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/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>\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 el c\u00f3digo anterior nos tenemos que fijar especialmente en la llamada a la funci\u00f3n <em>validate()<\/em>. Estamos indicando que cuando se pulse el bot\u00f3n del formulario con id=\u00bbcontact-form\u00bb, establecemos unas normas para cada campo como por ejemplo que el campo nombre, email y mensaje sean requeridos.<\/p>\n<p>Seguidamente tambi\u00e9n a\u00f1adimos los mensajes de error de cada campo y finalmente con <em>submitHandler<\/em> a\u00f1adimos el c\u00f3digo que procesar\u00e1 el formulario si todo cumple con las normas establecidas.<\/p>\n<p>Puedes ver m\u00e1s documentaci\u00f3n en <a href=\"http:\/\/docs.jquery.com\/Plugins\/Validation\" target=\"_blank\" rel=\"noopener noreferrer\">p\u00e1gina oficial<\/a>\u00a0para ver por ejemplo que reglas se pueden a\u00f1adir a los campos.<\/p>\n<p>El c\u00f3digo <strong>Ajax<\/strong> lo que hace es recibir los datos del formulario y construir una cadena que los contiene para pasarlos mediante el m\u00e9todo POST al archivo PHP.<\/p>\n<p>El mensaje de confirmaci\u00f3n del env\u00edo es retornado desde el archivo PHP y se captura en el <em>success<\/em> del <strong>Ajax<\/strong> donde estamos depositando dicho mensaje en el contenedor de confirmaci\u00f3n que inicialmente est\u00e1 oculto haci\u00e9ndolo visible.<\/p>\n<h2>C\u00f3digo PHP que se ejecuta en el servidor<\/h2>\n<p>Ahora solo faltar\u00e1 crear el archivo PHP que estamos utilizando en la llamada Ajax al cual le hemos dado el nombre de \u00absend.php\u00bb. Este se encargar\u00e1 de procesar los datos ya sea introduci\u00e9ndolos en una base de datos, guard\u00e1ndolos en un archivo o envi\u00e1ndolos por email. En el ejemplo en funcionamiento tan solo mostramos un mensaje de salida.<\/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\">echo<\/span> <span class=\"st_h\">'Gracias '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$_POST<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'name'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">' - '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$_POST<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'email'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'. La consulta ha sido recibida correctamente!'<\/span><span class=\"sy0\">;<\/span>\n<span class=\"co1\">\/\/codigo para enviar el email...<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p style=\"text-align: center;\"><em>Esta entrada ha sido actualizada el 29\/08\/2018.<\/em><\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/jquery\/validate-form\/demo.php\" 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\/validate-form\/validate-form.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.<\/p>\n","protected":false},"author":1,"featured_media":7260,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,5,3],"tags":[84],"class_list":["post-5769","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-jquery","category-php","tag-formularios"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Validar formulario con jQuery Validate y procesar con Ajax - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.\" \/>\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=\"Validar formulario con jQuery Validate y procesar con Ajax - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/\" \/>\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=\"2013-01-10T19:46:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-08T10:34:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.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\/validar-formulario-con-jquery-validate-procesar-con-ajax\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/\",\"name\":\"Validar formulario con jQuery Validate y procesar con Ajax - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.png\",\"datePublished\":\"2013-01-10T19:46:11+00:00\",\"dateModified\":\"2019-04-08T10:34:08+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Validar formulario con jQuery Validate y procesar 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":"Validar formulario con jQuery Validate y procesar con Ajax - Jose Aguilar Blog","description":"Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.","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":"Validar formulario con jQuery Validate y procesar con Ajax - Jose Aguilar Blog","og_description":"Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2013-01-10T19:46:11+00:00","article_modified_time":"2019-04-08T10:34:08+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.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\/validar-formulario-con-jquery-validate-procesar-con-ajax\/","url":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/","name":"Validar formulario con jQuery Validate y procesar con Ajax - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.png","datePublished":"2013-01-10T19:46:11+00:00","dateModified":"2019-04-08T10:34:08+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Valida formularios como nunca antes los hab\u00edas hecho de forma f\u00e1cil, elegante y con el m\u00ednimo esfuerzo utilizando el plugin jQuery Validate.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2013\/01\/jquery-validation-plugin-con-ajax.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/validar-formulario-con-jquery-validate-procesar-con-ajax\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Validar formulario con jQuery Validate y procesar 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\/5769","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=5769"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/5769\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7260"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=5769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=5769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=5769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}