<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TecnoRetales &#187; AJAX</title>
	<atom:link href="http://www.tecnoretales.com/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tecnoretales.com</link>
	<description>La experiencia no se olvida</description>
	<lastBuildDate>Wed, 07 Jul 2010 21:23:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- google ad injected by adsense-optimizer http://www.adsenseoptimizer.de -->
			<div  style="padding:7px; float: right; padding-right: 0; margin: 3px;"><!-- Ad number: 1 --><script type="text/javascript"><!--
    	 
    	google_ad_client = "pub-7180773421652966"; google_alternate_color = "FFFFFF";
		google_ad_width = 468; google_ad_height = 60;
		google_ad_format = "468x60_as"; google_ad_type = "text";
		google_ad_channel =""; google_color_border = "FE8B00";
		google_color_link = "FE8B00"; google_color_bg = "FFFFFF";
		google_color_text = "000000"; google_color_url = "D9D9D9";
		google_ui_features = "rc:6"; //--></script>
		<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div>	<item>
		<title>Serializar array con JavaScript</title>
		<link>http://www.tecnoretales.com/programacion/serializar-array-con-javascript/</link>
		<comments>http://www.tecnoretales.com/programacion/serializar-array-con-javascript/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 08:21:12 +0000</pubDate>
		<dc:creator>Manel Pérez Mata</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.tecnoretales.com/?p=522</guid>
		<description><![CDATA[Ayer os comentaba como pasar arrays por POST con PHP mediante los métodos serialize y unserialize y dejaba un poco al aire como hacerlo desde JavaScript.
Una manera bastante usual de hacerlo en JavaScript es concatenar los valores del array en un string separados por un token que luego nos permitirá volver a generar el array [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Ayer os comentaba como <a title="Pasar array por POST con PHP" href="http://www.tecnoretales.com/programacion/pasar-array-por-post-con-php/">pasar arrays por POST con PHP</a> mediante los métodos <strong>serialize</strong> y <strong>unserialize</strong> y dejaba un poco al aire como hacerlo desde JavaScript.</p>
<p>Una manera bastante usual de hacerlo en JavaScript es concatenar los valores del array en un string separados por un token que luego nos permitirá volver a generar el array con la función <strong>split</strong> de PHP, sin embargo, nos puede ser interesante utilizar la serialización por defecto de PHP, de este modo al recoger el valor, únicamente tendremos que llamar a unserialize y volveremos a tener el array intacto.<span id="more-522"></span></p>
<p>Aquí os dejo una función que me he currado que serializa un array para poder enviar en un formulario o vía AJAX a nuestro servidor:</p>
<pre class="brush: jscript;">function serialize(arr)
{
 var res = 'a:'+arr.length+':{';
 for(i=0; i&lt;arr.length; i++)
 {
 res += 'i:'+i+';s:'+arr[i].length+':&quot;'+arr[i]+'&quot;;';
 }
 res += '}';

 return res;
}</pre>
<p>El ejemplo de ayer modificado para usar <strong>serialize</strong> desde el lado de cliente sería:</p>
<pre class="brush: php;">&lt;?php

if(isset($_POST['frutas']) &amp;&amp; $_POST['frutas']!=&quot;&quot; )
{
 // si existe lo deserializamos para poder tratarlo
 $frutas = unserialize(stripslashes($_POST['frutas']));
 var_dump($frutas);
}
?&gt;
&lt;html&gt;
 &lt;head&gt;
 &lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
 function serialize(arr)
 {
 var res = 'a:'+arr.length+':{';
 for(i=0; i&lt;arr.length; i++)
 {
 res += 'i:'+i+';s:'+arr[i].length+':&quot;'+arr[i]+'&quot;;';
 }
 res += '}';

 this.document.forms[0].frutas.value = res;
 }
 &lt;/script&gt;
 &lt;/head&gt;
 &lt;form method=&quot;POST&quot; onSubmit=&quot;serialize(new Array('Cereza', 'Pera', 'Fresa', 'Manzana'))&quot;&gt;
 &lt;input type=&quot;hidden&quot; name=&quot;frutas&quot; value=&quot;&quot; /&gt;
 &lt;input type=&quot;submit&quot; value=&quot;Pasar&quot; /&gt;
 &lt;/form&gt;
&lt;/html&gt;</pre>
<p>Realmente, no hay mucha diferencia entre usar un método u otro, sin embargo, me parece más elegante serializarlo de este modo antes de enviar.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.tecnoretales.com/programacion/serializar-array-con-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pasar Array por POST con PHP</title>
		<link>http://www.tecnoretales.com/programacion/pasar-array-por-post-con-php/</link>
		<comments>http://www.tecnoretales.com/programacion/pasar-array-por-post-con-php/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 06:29:56 +0000</pubDate>
		<dc:creator>Manel Pérez Mata</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.tecnoretales.com/?p=518</guid>
		<description><![CDATA[Si queremos pasar un array por POST y lo hacemos tal cual, veremos que la cosa no acaba de funcionar. La manera correcta de hacerlo es serializando previamente nuestro vector y una vez enviado, deserializarlo. Para ello PHP dispone de las funciones serialize y unserialize que harán el trabajo por nosotros.
En el siguiente ejemplo, vemos [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Si queremos pasar un array por POST y lo hacemos tal cual, veremos que la cosa no acaba de funcionar. La manera correcta de hacerlo es <strong>serializando previamente</strong> nuestro vector y una vez enviado, deserializarlo. Para ello PHP dispone de las funciones <em>serialize</em> y <em>unserialize</em> que harán el trabajo por nosotros.</p>
<p>En el siguiente ejemplo, vemos un uso sencillo de este método para enviar nuestros datos por la web:</p>
<pre class="brush: php;">&lt;?php

if(!isset($_POST['frutas']) &amp;&amp; $_POST['frutas']==&quot;&quot; ) {
  // Creamos el array frutas
  $frutas[] = &quot;Cereza&quot;;
  $frutas[] = &quot;Pera&quot;;
  $frutas[] = &quot;Fresa&quot;;
  $frutas[] = &quot;Manzana&quot;;
} else {
  // si existe lo deserializamos para poder tratarlo
  $frutas = unserialize(stripslashes($_POST['frutas']));
  var_dump($frutas);
}
?&gt;
&lt;html&gt;
&lt;form method=&quot;POST&quot;&gt;
  &lt;input type=&quot;hidden&quot; name=&quot;frutas&quot; value='&lt;?php echo serialize($frutas) ?&gt;'&gt;&lt;/input&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Pasar&quot;&gt;
&lt;/form&gt;
&lt;/html&gt;&lt;/pre&gt;
El resultado de hacer un var_dump de la variable $frutas serializado sería:
&lt;pre dir=&quot;ltr&quot;&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;a:4:{i:0;s:6:&quot;Cereza&quot;;i:1;s:4:&quot;Pera&quot;;i:2;s:5:&quot;Fresa&quot;;i:3;s:7:&quot;Manzana&quot;;}&lt;/span&gt;</pre>
<p>Si queremos, por ejemplo, enviar un array desde el lado del cliente mediante AJAX, podríamos por ejemplo, crearnos un método javascript sencillo que nos serializase un array y así luego poder desserializarlo desde PHP.</p>
<p>Mañana publicaré en un nuevo post una <a title="Serializar array con JavaScript" href="http://www.tecnoretales.com/programacion/serializar-array-con-javascript/">función serialize para JavaScript</a>, de este modo, podemos enviar desde el lado cliente un array serializado con el submit de un formulario o mediante AJAX.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.tecnoretales.com/programacion/pasar-array-por-post-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
