{"id":5790,"date":"2013-01-20T15:43:30","date_gmt":"2013-01-20T15:43:30","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=5790"},"modified":"2019-04-08T10:12:03","modified_gmt":"2019-04-08T10:12:03","slug":"escribir-en-archivo-con-jquery-ajax-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/","title":{"rendered":"Escribir en un archivo con jQuery, Ajax y PHP"},"content":{"rendered":"<p>En este art\u00edculo vamos a ver como escribir o crear un archivo .txt con jQuery, Ajax y PHP. Emplearemos estas tecnolog\u00edas solo por el simple hecho de no tener que recargar la p\u00e1gina tras enviar el formulario.<\/p>\n<p>En el ejemplo en funcionamiento tendremos un formulario con un campo textarea donde introduciremos el texto que deseamos guardar en el archivo. Por motivos de seguridad, hemos deshabilitado la opci\u00f3n de introducir c\u00f3digo HTML.<\/p>\n<p>En el &lt;body&gt; de nuestra p\u00e1gina vamos a tener el siguiente formulario:<\/p>\n<pre>&lt;form id=\"form\" method=\"post\"&gt;\r\n\u00a0\u00a0\u00a0 Texto:&lt;br\/&gt;\r\n\u00a0\u00a0 \u00a0&lt;textarea name=\"data\" id=\"data\" rows=\"7\" cols=\"84\" placeholder=\"Escribe aqui un texto...\"&gt;&lt;\/textarea&gt;\r\n\u00a0\u00a0\u00a0 &lt;a href=\"#\" id=\"save\"&gt;Guardar&lt;\/a&gt;\r\n&lt;\/form&gt;<\/pre>\n<p>Donde simplemente tendremos un campo de texto (textarea) y un bot\u00f3n o link.<\/p>\n<p>En el &lt;head&gt; de esta misma p\u00e1gina incluiremos la librer\u00eda jQuery y los scripts necesarios para llevar a cabo la funcionalidad principal del ejemplo:<\/p>\n<pre>&lt;script src=\"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.8.3\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\n$(document).ready(function(){\r\n\u00a0\u00a0\u00a0 $('#save').live('click', function() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var dataString = 'data='+$('textarea#data').val();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $.ajax({\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 type: \"POST\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 url: \"writetxt.php\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data: dataString,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 success: function(data) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/alert(data);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$('form').remove();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$('.content').append('&lt;p&gt;Tu texto se ha guardado correctamente!&lt;\/p&gt;&lt;a href=\"data.txt\" target=\"_blank\"&gt;Ver&lt;\/a&gt;');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 });\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\u00a0\u00a0\u00a0 });\r\n});\r\n&lt;\/script&gt;<\/pre>\n<p>El c\u00f3digo anterior simplemente est\u00e1 esperando a que se pulse en el bot\u00f3n o link con id=\u00bbsave\u00bb para capturar la informaci\u00f3n que se ha introducido en el campo de texto con id=\u00bbdata\u00bb (textarea) y mediante la t\u00e9cnica AJAX enviamos esa informaci\u00f3n a un archivo php que ser\u00e1 el encargado de escribir esta informaci\u00f3n enviada en el archivo .txt.<\/p>\n<p>El archivo .php tendr\u00e1 el siguiente contenido:<\/p>\n<pre>&lt;?php\r\nrequire_once(\"classes\/class.inputfilter.php\");\r\n$ifilter = new InputFilter();\r\n$data = $ifilter-&gt;process($_POST['data']);\r\n$file = 'data.txt';\r\n\r\nif (isset($data)) {\r\n\u00a0\u00a0\u00a0 $fp = fopen($file, 'w');\r\n\u00a0\u00a0\u00a0 fwrite($fp, utf8_decode($data));\r\n\u00a0\u00a0\u00a0 fclose($fp);\r\n\u00a0\u00a0\u00a0 chmod($file, 0777);\r\n\u00a0\u00a0\u00a0 echo 'Se han guardado correctamente la informaci\u00f3n en el txt!';\r\n}\r\nelse {\r\n\u00a0\u00a0 \u00a0echo 'No hay datos que guardar!';\r\n}\r\n?&gt;<\/pre>\n<p>En este archivo lo primero que hacemos es recibir los datos enviados mediante el m\u00e9todo POST y utilizar un t\u00e9cnica para evitar el XSS con la clase inputfilter de PHP, entonces si hay informaci\u00f3n que guardar, abrimos el fichero y escribimos en \u00e9l la informaci\u00f3n recibida.<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/scripts\/jquery\/writetxt\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ver ejemplo en funcionamiento<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo vamos a ver como escribir o crear un archivo .txt con jQuery, Ajax y PHP. Emplearemos estas tecnolog\u00edas solo por el simple hecho de no tener que recargar la p\u00e1gina tras enviar el formulario. En el ejemplo en funcionamiento tendremos un formulario con un campo textarea donde introduciremos el texto que deseamos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4519,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,5,3],"tags":[103,167],"class_list":["post-5790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-jquery","category-php","tag-archivos","tag-eventos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Escribir en un archivo con jQuery, Ajax y PHP - 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=\"Escribir en un archivo con jQuery, Ajax y PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo vamos a ver como escribir o crear un archivo .txt con jQuery, Ajax y PHP. Emplearemos estas tecnolog\u00edas solo por el simple hecho de no tener que recargar la p\u00e1gina tras enviar el formulario. En el ejemplo en funcionamiento tendremos un formulario con un campo textarea donde introduciremos el texto que deseamos [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-20T15:43:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-08T10:12:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"190\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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\/escribir-en-archivo-con-jquery-ajax-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/\",\"name\":\"Escribir en un archivo con jQuery, Ajax y PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg\",\"datePublished\":\"2013-01-20T15:43:30+00:00\",\"dateModified\":\"2019-04-08T10:12:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg\",\"width\":190,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Escribir en un archivo con jQuery, Ajax y PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Escribir en un archivo con jQuery, Ajax y PHP - 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":"Escribir en un archivo con jQuery, Ajax y PHP - Jose Aguilar Blog","og_description":"En este art\u00edculo vamos a ver como escribir o crear un archivo .txt con jQuery, Ajax y PHP. Emplearemos estas tecnolog\u00edas solo por el simple hecho de no tener que recargar la p\u00e1gina tras enviar el formulario. En el ejemplo en funcionamiento tendremos un formulario con un campo textarea donde introduciremos el texto que deseamos [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2013-01-20T15:43:30+00:00","article_modified_time":"2019-04-08T10:12:03+00:00","og_image":[{"width":190,"height":200,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg","type":"image\/jpeg"}],"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\/escribir-en-archivo-con-jquery-ajax-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/","name":"Escribir en un archivo con jQuery, Ajax y PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg","datePublished":"2013-01-20T15:43:30+00:00","dateModified":"2019-04-08T10:12:03+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/ajax-php.jpg","width":190,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/escribir-en-archivo-con-jquery-ajax-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Escribir en un archivo con jQuery, Ajax y PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/5790","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=5790"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/5790\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/4519"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=5790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=5790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=5790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}