<?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>TolerantX&#039;s Blog</title>
	<atom:link href="http://tolerantx.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tolerantx.com</link>
	<description>Y sin embargo se mueve</description>
	<lastBuildDate>Mon, 21 Jun 2010 21:56:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Una forma de decir hasta luego</title>
		<link>http://tolerantx.com/2010/04/28/una-forma-de-decir-hasta-luego/</link>
		<comments>http://tolerantx.com/2010/04/28/una-forma-de-decir-hasta-luego/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 23:00:15 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=341</guid>
		<description><![CDATA[Hoy se cierra una etapa de mi vida, un ciclo que en realidad no esperaba que fuera tan difícil, tal vez ocurrió demasiado rápido o de plano no me lo esperaba, sin embargo así es la vida y hoy dejo mi empleo para incorporarme a laborar en otra empresa, si ha sido difícil es por [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy se cierra una etapa de mi vida, un ciclo que en realidad no esperaba que fuera tan difícil, tal vez ocurrió demasiado rápido o de plano no me lo esperaba, sin embargo así es la vida y hoy dejo mi empleo para incorporarme a laborar en otra empresa, si ha sido difícil es por lo bien que me he sentido trabajando para <a href="http://phoenixrep.com" target="_blank">Phoenix Rep</a>, intenté dar mi mejor esfuerzo y con ello me llevo un montón de cosas que aprendí, tanto en el nivel profesional como en el personal.</p>
<p>Agradezco la gran oportunidad que me brindaron, la confianza que me dieron y espero no haberlos defraudado. Extrañaré esos momentos a la hora de la comida y todo lo que conlleva convivir con excelentes profesionales y sobre todo excelentes personas.</p>
<p>Les mando un cordial saludo a todos los involucrados (Jajaja! para los que criticaban mi firma del outlook) y seguimos en contacto.</p>
<p style="text-align: center;">¡Gracias por todo!</p>
<p>P.D. Aún recuerdo el día que fui a entrevista (como si fuera ayer) con cara de gallina comprada volteando a todos lados dudando en tocar el timbre o no y preguntandome &#8220;¿aquí es?&#8221;. <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/04/28/una-forma-de-decir-hasta-luego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checkbox: Seleccionar, deseleccionar todos</title>
		<link>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/</link>
		<comments>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 04:16:34 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[funcion]]></category>
		<category><![CDATA[seleccionar todos]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=332</guid>
		<description><![CDATA[Sé que hay muchos ejemplos, guias etc sobre como seleccionar o deseleccionar checkbox en una página web con javascript, pero pocos hacen referencia a hacer una función un poco más generica donde abarque tanto el nombre del formulario, el nombre de elementos a seleccionar y la casilla &#8220;todos&#8221; también con checkbox. Tenemos 2 funciones javascript, [...]]]></description>
			<content:encoded><![CDATA[<p>Sé que hay muchos ejemplos, guias etc sobre como seleccionar o deseleccionar checkbox en una página web con javascript, pero pocos hacen referencia a hacer una función un poco más generica donde abarque tanto el nombre del formulario, el nombre de elementos a seleccionar y la casilla &#8220;todos&#8221; también con checkbox.</p>
<p>Tenemos 2 funciones javascript, una que se encarga de seleccionar todos los &#8220;checkbox&#8221; y la otra función que se encarga de verificar si permanece seleccionado nuestro checkbox que selecciona &#8220;todos&#8221;:<span id="more-332"></span></p>
<pre  name="code"  class="javascript">function checkElements(form, elementAll, elementToCheck) {
    var form, checkbox = form.elements[elementToCheck];
    totalElements = checkbox.length;
    checkboxAll = form.elements[elementAll];

    for(var n=0; n&lt;totalElements; n++) {
        checkbox[n].checked = checkboxAll.checked;
    }
}

function checkElementAll(form, elementAll, elementCheck) {
    var form, counter=0;
    checkbox = form.elements[elementCheck];
    checkboxAll = form.elements[elementAll];
    totalElements = checkbox.length;

    for(var n=0; n&lt;totalElements; n++) {
        if (checkbox[n].checked == true) counter++;
    }
    if (totalElements &gt; counter)
        checkboxAll.checked = false;
    else
        checkboxAll.checked = true;
}
</pre>
<p>Y un ejemplo de formulario sería algo como lo siguiente:</p>
<pre name="code" class="xml">&lt;form name="nombreFormulario" method="post" action=""&gt;
    &lt;p&gt;&lt;input type="checkbox" name="selecciona_todos" onclick="checkElements(this.form, this.name, 'frutas[]')" /&gt;&lt;label&gt;Todos&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="manzana" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Manzana&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="mango" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Mango&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="pera" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Pera&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="sandia" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Sandia&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="naranja" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Naranja&lt;/label&gt;&lt;/p&gt;
&lt;/form&gt;</pre>
<p> <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿¿Reactive su cuenta de GMail??</title>
		<link>http://tolerantx.com/2010/03/16/reactive-su-cuenta-de-gmail/</link>
		<comments>http://tolerantx.com/2010/03/16/reactive-su-cuenta-de-gmail/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 13:15:07 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[Phishing]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=304</guid>
		<description><![CDATA[¡¡Ave María Purísima!! Ja! el día de ayer me llegó el siguiente correo que disque pára &#8220;reactivar mi cuenta de GMail&#8221;, copio y pego solo edité la dirección de correo INFORMACIÓN IMPORTANTE micorreo@gmail.com Debido a cambios recientes en su cuenta de GMail (contraseña e información personal), por seguridad usted debe confirmarla. Si no confirma su [...]]]></description>
			<content:encoded><![CDATA[<p>¡¡Ave María Purísima!!</p>
<p>Ja! el día de ayer me llegó el siguiente correo que disque pára &#8220;reactivar mi cuenta de GMail&#8221;, copio y pego solo edité la dirección de correo <img src='http://tolerantx.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<blockquote><p><strong>INFORMACIÓN IMPORTANTE</strong></p>
<p><strong><a href="mailto:tolerantx@gmail.com" target="_blank">micorreo@gmail.com</a></strong></p>
<p>Debido a cambios recientes en su cuenta de GMail (contraseña e  información personal), por seguridad usted debe confirmarla. Si no  confirma su cuenta es posible que el Equipo de GMail cierre su cuenta  por seguridad. Recuerde tiene un plazo de 3 dias para realizarlo. Para  confirmar porfavor ingrese al siguiente link:</p>
<p><strong> http://gmail.com/accounts&amp;idinfo=011b1y121b22y121232KJGASEWWA&amp;IDCLASS=nulled&amp;acctype=gmail</strong></p>
<p>Si tienes dudas ingrese a nuestro sistema de ayuda online, clickeando  en la parte superior de la página principal.<br />
&#8212;&#8212;&#8212;&#8212;<br />
El equipo de GMail<span id="more-304"></span></p></blockquote>
<p>Obviamente ese dirección url no es a donde apuntaba la liga sino a un dominio llamado www.gmail7.info (¿de cuándo acá gmail tiene ligas así?), investigué quien dió de alta ese dominio y como soy bien buena onda les dejo el enlace de la información del dueño que el buscador godaddy me hizo el favor de proporcionarme <a href="http://who.godaddy.com/WhoIs.aspx?domain=gmail7.info&amp;prog_id=godaddy">http://who.godaddy.com/WhoIs.aspx?domain=gmail7.info&amp;prog_id=godaddy</a> donde el dueño es nickneeck@gmail.com.</p>
<p>Siempre me han llamado la atención éste tipo de acontecimientos y como soy un poco curioso investigué un poquito más, donde encontré que el correo provenía de Torreón, digo según ésta información (IP obtenida del email):</p>
<blockquote><p>201.132.241.208 &#8211; Geo Information<br />
IP Address 	201.132.241.208<br />
Host 	customer-TOR-241-208.megared.net.mx<br />
Location 	MX MX, Mexico<br />
City 	Torreón, 07 -<br />
Organization 	MegaCable SA de CV<br />
ISP 	MegaCable SA de CV<br />
AS Number 	AS13999<br />
Latitude 	25°55&#8217;00&#8243; North<br />
Longitude 	103°43&#8217;33&#8243; West<br />
Distance 	10673.55 km (6632.24 miles)</p></blockquote>
<p>Del mismo correo obtuve de dónde venía el pseudo xploit www.forosxd.com/xploits/xp/enviar_gmail_confirmar.php y si de hecho pueden encontrar otros tantos xploits en www.forosxd.com/xploits/xp/ que nuevamente si se es más observador no son más que descargados de www.portalhack.us y por obvias razones el propietario de ese portal es el mismo de gmail7.info y forosxd.com.</p>
<p>Alguien de Torreón hizo uso de éstos scripts hacia mi correo, ¿un lammer?, ¿qué opinan?.</p>
<p>Moraleja: siempre revisen hacia donde apuntan las ligas/links/urls que les mandan por correo electrónico y más cuando les piden usar usuarios y contraseñas. <img src='http://tolerantx.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/16/reactive-su-cuenta-de-gmail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Descargar Videos Youtube en tu navegador Google Chrome</title>
		<link>http://tolerantx.com/2010/03/11/descargar-videos-youtube-en-tu-navegador-google-chrome/</link>
		<comments>http://tolerantx.com/2010/03/11/descargar-videos-youtube-en-tu-navegador-google-chrome/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 16:38:56 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[descargar]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=300</guid>
		<description><![CDATA[Con las extensiones que están disponibles para Google Chrome me he encontrado con YouTube Downloader que para mucha gente puede ser interesante y es la que nos permite descargar videos de youtube. Ésta extensión nos permite descargar los videos en formatos HD, mp4, 3gp, flv. Solo necesitas entra a la página de YouTube Downloader agregas [...]]]></description>
			<content:encoded><![CDATA[<p>Con las extensiones que están disponibles para Google Chrome me he encontrado con <a title="YouTube Downloader" rel="bookmark" href="http://www.chromeextensions.org/music-videos-photos/youtube-downloader/">YouTube Downloader </a><br />
que para mucha gente puede ser interesante y es la que nos permite descargar videos de youtube. Ésta extensión nos permite descargar los videos en formatos HD, mp4, 3gp, flv.</p>
<p>Solo necesitas entra a la página de <a title="YouTube Downloader" rel="bookmark" href="http://www.chromeextensions.org/music-videos-photos/youtube-downloader/">YouTube Downloader</a> agregas la extensión y cuando estés viendo tu video en la parte de la descripción del video se habilitarán las opciones de descarga. <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Para firefox existen muchas soluciones en su biblioteca <a href="https://addons.mozilla.org/en-US/firefox/search?q=youtube&amp;cat=all&amp;advancedsearch=1&amp;as=1&amp;appid=1&amp;lver=any&amp;atype=0&amp;pp=20&amp;pid=5&amp;sort=&amp;lup=">complementos/extensiones.</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">HD</div>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/11/descargar-videos-youtube-en-tu-navegador-google-chrome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1er Cardiomaratón 2010</title>
		<link>http://tolerantx.com/2010/03/08/1er-cardiomaraton-2010/</link>
		<comments>http://tolerantx.com/2010/03/08/1er-cardiomaraton-2010/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 04:59:11 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Cardiomaraton]]></category>
		<category><![CDATA[Desfibrilacion]]></category>
		<category><![CDATA[RCP]]></category>
		<category><![CDATA[Record Guinnes]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=295</guid>
		<description><![CDATA[El cardiomaratón se efectuará en Guadalajara en el estadio Jalisco, el evento es gratuito y pretende enseñar al público cosas como RCP Básico, Desfibrilación y RCP Avanzado, el cardiomaratón se llavará a cabo el día domingo 21 de marzo de 9:00 am a 2:00 pm. Por cierto pretenden romper Récord Guinness del Cardiomaratón más concurrido. [...]]]></description>
			<content:encoded><![CDATA[<p>El cardiomaratón se efectuará en Guadalajara en el estadio Jalisco, el evento es gratuito y pretende enseñar al público cosas como RCP Básico, Desfibrilación y RCP Avanzado, el cardiomaratón se llavará a cabo el día domingo 21 de marzo de 9:00 am a 2:00 pm.</p>
<p>Por cierto pretenden romper Récord Guinness del Cardiomaratón más concurrido.</p>
<p>Cito textualmente la introducción de su página web</p>
<blockquote>
<h2>1er Cardiomaraton</h2>
<p>La Universidad de Guadalajara, el Centro Universitario de Ciencias de  la Salud y el Laboratorio de Cardiología te invitan a aprender a salvar  vidas. ¿Cómo? Pues aprendiendo RCP (Reanimación Cardiopulmonar). No  sólo en caso de infarto sino también en otros casos en dónde está en  peligro la vida, como en atragantamiento, ahogamiento, hipotermia, entre  otras situaciones especiales.</p></blockquote>
<p>Para más información y registrarte visita la página web <a href="http://www.cardiomaraton.com/" target="_blank">www.cardiomaraton.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/08/1er-cardiomaraton-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar formulario sin recargar la página con Zend Framework y JQuery.</title>
		<link>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/</link>
		<comments>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:57:33 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Guardar]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=163</guid>
		<description><![CDATA[Cuando se están manejando formularios con PHP guardando los datos en algún gestor de base de datos como MySQL llega a surgir la duda de cómo guardar dichos datos utilizando Ajax (JQuery en éste caso) para evitarnos el refresco de pantalla y poder seguir haciendo uso del sistema sin este pequeño (o grande) retraso. Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se están manejando formularios con PHP guardando los datos en algún gestor de base de datos como MySQL llega a surgir la duda de cómo guardar dichos datos utilizando Ajax (JQuery en éste caso) para evitarnos el refresco de pantalla y poder seguir haciendo uso del sistema sin este pequeño (o grande) retraso.</p>
<p>Primero que nada utilizaré Zend Framework, JQuery y MySQL como gestor de base de datos. Para éste ejemplo empezaremos creando una base de datos sencilla llamada clientes donde única y exclusivamente guardaremos el nombre (para no hacer tan extenso ésto).<span id="more-163"></span></p>
<p>Muy bien para crear nuestra tabla primeramente debemos tener creada la base de datos, puedes utilizar phpmyadmin o la línea de comandos, como más te agrade, de todas maneras adjunto el código de la creación de la base de datos como también de la tabla.</p>
<pre name="code" class="sql">CREATE DATABASE `prueba`;

CREATE TABLE `prueba`.`clientes` (
  `id_cliente` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `cliente` VARCHAR( 100 ) NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
</pre>
<p>Si te fijas la base de datos la llamé prueba y la tabla la llamé cliente con dos campos, id_cliente y cliente.<br />
No entraré en detalles en creación de controladores, modulos, vistas, en nuestro árbol de directorios de Zend Framework.</p>
<p>Creo el módulo (application/models/Clientes.php) con un método llamado getClientes, éste método nos devolverá posteriormente los clientes guardados en la base de datos:</p>
<pre name="code" class="php">&lt;?php

class Clientes extends Zend_Db_Table
{
    protected $_name = 'clientes';

    public function getClientes()
    {
        $c = new Clientes();
        $c_select = $c-&gt;select()-&gt;order('cliente');

        return $c-&gt;fetchAll($c_select);
    } // end getClientes

}
</pre>
<p>El controlador lo llamaré Clientes así que queda de la siguiente manera (application/controllers/ClientesController.php):</p>
<pre name="code" class="php">&lt;?php

class ClientesController extends Zend_Controller_Action
{

    public function init()
    {
        $this-&gt;initView();
        $this-&gt;view-&gt;baseUrl = $this-&gt;_request-&gt;getBaseUrl();
    }

    public function indexAction()
    {
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();
        $this-&gt;view-&gt;clientes = $c-&gt;getClientes();

    } // end indexAction()

}

?&gt;
</pre>
<p>El método init nos arroja la variable baseUrl, la cual utilizaremos para la llamada de archivos en nuestra vista, como también tiene la acción index y hace una consulta a nuestra base de datos clientes (getClientes) como lo mencionamos anteriormente y dicha consulta la podremos ver en nuestra vista.</p>
<p>Aquí quedaría nuestra vista (application/views/scripts/clientes/index.phtml):</p>
<pre name="code" class="xhtml">&lt;script type="text/javascript" language="javascript" src="&lt;?php echo $this-&gt;baseUrl;?&gt;/public/scripts/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" language="javascript" src="&lt;?php echo $this-&gt;baseUrl;?&gt;/public/scripts/guardarCliente.js"&gt;&lt;/script&gt;
&lt;form action="" name="form1" id="form1" method="post"&gt;
    &lt;label&gt;Cliente: &lt;/label&gt;&lt;div id="div_cliente"&gt;
        &lt;select name="cliente" id="cliente"&gt;
            &lt;?php foreach ($this-&gt;clientes as $cliente) : ?&gt;
            &lt;option value="&lt;?php echo $cliente-&gt;id_cliente; ?&gt;"&gt;&lt;?php echo $cliente-&gt;cliente; ?&gt;&lt;/option&gt;
            &lt;?php endforeach; ?&gt;
        &lt;/select&gt;
    &lt;/div&gt;
&lt;/form&gt;

&lt;div id="form_ajax"&gt;
    &lt;form name="guardar_cliente"&gt;
        &lt;p&gt;Cliente:&lt;/p&gt;
        &lt;input type="text" name="nombre_cliente" id="nombre_cliente" value="" /&gt;
        &lt;input type="submit" name="submit" value="Guardar" id="guardarCliente" /&gt;
    &lt;/form&gt;
&lt;/div&gt;
</pre>
<p>En el código anterior hemos agregado la libreria de JQuery que la puedes descargar de Aquí y además el archivo agregarCliente que se encargará de hacer la petición AJAX del guardado del cliente. Este archivo quedaría como lo siguiente (public/scripts/agregarCliente.js):</p>
<pre name="code" class="javascript">$(function() {

    // bloqueamos la tecla enter para que no recargue la página
    $('#form_ajax').bind('keypress', function(e) {
        if (e.keyCode == 13) return false;
    });

    $('#guardarCliente').click(function() {

        var nombre_cliente = $('#nombre_cliente').val();
        var baseUrl = '/prueba';
        var dataString = 'nombre_cliente=' + nombre_cliente;

        $.ajax(
        {
            async: true,
            dataType: 'html',
            type: 'POST',
            contentType: 'application/x-www-form-urlencoded',
            url: baseUrl + '/clientes/guardar-cliente/',
            data: dataString,
            beforeSend: function(data){
                    $('#div_cliente').html('&lt;label&gt;Cargando...&lt;/label&gt;');
            },
            success: function(requestData){
                    $('#div_cliente').html(requestData);
            },
            error: function(requestData, strError, strTipoError){
                    alert('Error ' + strTipoError +': ' + strError);
            },
            complete: function(requestData, exito){
            }
        });

        $('#nombre_cliente').val('');
        return false;
    });
});
</pre>
<p>Ten en cuenta el atributo url de $.ajax ( url: baseUrl + &#8216;/clientes/guardar-cliente/&#8217;) ya que es en donde se ejecuta el script del lado del servidor (PHP) que guardará finalmente nuestro cliente.<br />
La variable baseUrl de nuestro archivo javascript igualmente hace referencia al directorio en el que se encuentra nuestro sistema dentro de nuestro servidor web.</p>
<p>Por último volvemos a modificar nuestro controlador, agregando la acción guardar-cliente y nuestro archivo application/controllers/ClientesController.php será el siguiente:</p>
<pre name="code" class="php">&lt;?php

class ClientesController extends Zend_Controller_Action
{

    public function init()
    {
        $this-&gt;initView();
        $this-&gt;view-&gt;baseUrl = $this-&gt;_request-&gt;getBaseUrl();
    }

    public function indexAction()
    {
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();
        $this-&gt;view-&gt;clientes = $c-&gt;getClientes();

    } // end indexAction()

    public function guardarClienteAction()
    {
    if ($this-&gt;getRequest()-&gt;isXmlHttpRequest()) { //Detectamos si es una llamada AJAX

        $this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender();
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();

        // agregamos el estado
        $cliente = $this-&gt;_request-&gt;getPost('nombre_cliente');

        $cliente_data = array ('cliente' =&gt; $cliente);
        $c-&gt;insert($cliente_data);

        // consulta de la nueva lista de clientes
        $clientes = $c-&gt;getClientes();
        if (count($clientes) &gt; 0) {

            echo '&lt;select name="cliente" id="clienteo"&gt;';
            foreach($clientes as $cl):
                $selected = '';
                if ($cl-&gt;cliente == $cliente) { $selected = 'selected="selected"'; }
                echo '&lt;option value="'.$cl-&gt;id_cliente.'" '.$selected.'&gt;'.$cl-&gt;cliente.'&lt;/option&gt;';
            endforeach;
            echo '&lt;/select&gt;';

        } // end if (count($clientes) &gt; 0)

     } // end if ($this-&gt;getRequest()-&gt;isXmlHttpRequest())

    } // end guardarClienteAction

}

?&gt;
</pre>
<p>Y listo ya tienes tu modulo clientes el cual te lista los clientes ya existentes y desde la misma página podrás agregar más sin necesidad de recargar la página como lo hace un formulario normal.</p>
<p>Cabe destacar que yo lo realicé con el Zend Framework, pero si se analiza el código es bastante simple y puede aplicarse sin éste, pero eso ya les toca a ustedes hacerlo.</p>
<p>Cualquier aportación o comentario serán bien recibidos <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Buzz</title>
		<link>http://tolerantx.com/2010/02/10/google-buzz/</link>
		<comments>http://tolerantx.com/2010/02/10/google-buzz/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 17:03:05 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=203</guid>
		<description><![CDATA[Hoy ingresando a mi cuenta de correo me encuentro con la novedad del nuevo servicio que google está ofreciendo, Google Buzz, se asemeja a servicios tipo twitter donde puedes actualizar tu estatus, compartir, fotos, videos etc. Pudiera parecer otro servicio más sin mucha novedad pero tiene detrás a google apostando por entrar cada vez más [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy ingresando a mi cuenta de correo me encuentro con la novedad del nuevo servicio que google está ofreciendo, Google Buzz, se asemeja a servicios tipo twitter donde puedes actualizar tu estatus, compartir, fotos, videos etc.</p>
<p>Pudiera parecer otro servicio más sin mucha novedad pero tiene detrás a google apostando por entrar cada vez más al mundo de las redes sociales, veremos como le va.</p>
<p>Entren a la siguiente liga para más información <a href="http://buzz.google.com" target="_blank">buzz.google.com</a></p>
<p>Y adjunto un video donde muestra lo que es Buzz.</p>
<p style="text-align: center;"><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/yi50KlsCBio&#038;fs=1" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/yi50KlsCBio&#038;fs=1" /><param name="FlashVars" value="playerMode=embedded"/><param name="wmode" value="transparent"/></object></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/02/10/google-buzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editar enlaces/links del Widget Meta en WordPress 2.9.1</title>
		<link>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/</link>
		<comments>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 02:00:55 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[widget meta]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=180</guid>
		<description><![CDATA[Primero que nada la versión del wordpress no necesariamente tiene que ser la mencionada, puede que funcione en versiones anteriores, para ésta fecha la versión más actual es la 2.9.1. Pues bien empecemos, para modificar el widget meta porque por default maneja enlaces que en lo particular no los quiero, vease la siguiente imagen: Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Primero que nada la versión del wordpress no necesariamente tiene que ser la mencionada, puede que funcione en versiones anteriores, para ésta fecha la versión más actual es la 2.9.1.</p>
<p>Pues bien empecemos, para modificar el widget meta porque por default maneja enlaces que en lo particular no los quiero, vease la siguiente imagen:<a href="http://tolerantx.files.wordpress.com/2010/01/11.jpg"><img class="aligncenter size-medium wp-image-196" title="Blog" src="http://tolerantx.files.wordpress.com/2010/01/11.jpg?w=300" alt="" width="300" height="193" /></a></p>
<p><span id="more-180"></span>Primero que nada tendremos que editar el archivo que se encuentra en la ruta wp-includes/default-widgets.php y nos ubicamos por ahí de la línea 295 lo cual verían algo como ésto.<a href="http://tolerantx.files.wordpress.com/2010/01/3.jpg"><img class="aligncenter size-medium wp-image-185" title="Codigo a quitar" src="http://tolerantx.files.wordpress.com/2010/01/3.jpg?w=300" alt="" width="300" height="57" /></a></p>
<p><a href="http://tolerantx.files.wordpress.com/2010/01/4.jpg"><img class="aligncenter size-medium wp-image-186" title="Codigo eliminado" src="http://tolerantx.files.wordpress.com/2010/01/4.jpg?w=300" alt="" width="300" height="40" /></a></p>
<p>Simplemente borramos/editamos los enlaces que no nos gusten y en mi caso quito los tres que marco a continuación para quedar de la siguiente manera.<a href="http://tolerantx.files.wordpress.com/2010/01/5.jpg"><img class="aligncenter size-medium wp-image-187" title="Blog final" src="http://tolerantx.files.wordpress.com/2010/01/5.jpg?w=300" alt="" width="300" height="194" /></a></p>
<p>Y listo, para ello si agregamos el widget a nuestro blog ya no aparecerán esas ligas <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , por cierto también en algunos temas ponen dicho widget por default, si aún haciendo lo anterior no funciona necesitan editar el archivo sidebar.php que se encuentra en la ruta &#8220;wp-content/themes/tu_tema/&#8221; pero eso ya te toca a tí modificarlo <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.roxoroxo.com/wp/2010/01/27/bienvenido/">Roxoroxo</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 366px; width: 1px; height: 1px;">Simplemente</div>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome Beta en Ubuntu 9.10</title>
		<link>http://tolerantx.com/2009/12/11/google-chrome-beta-en-ubuntu-9-10/</link>
		<comments>http://tolerantx.com/2009/12/11/google-chrome-beta-en-ubuntu-9-10/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 21:28:28 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=175</guid>
		<description><![CDATA[Pues a ver que tal funciona por acá.]]></description>
			<content:encoded><![CDATA[<p>Pues a ver que tal funciona por acá.</p>
<p style="text-align: center;"><a href="http://tolerantx.files.wordpress.com/2009/12/google_chrome1.png"><img class="size-medium wp-image-177 aligncenter" title="google_chrome" src="http://tolerantx.files.wordpress.com/2009/12/google_chrome1.png?w=300" alt="Google Chrome Beta en Ubuntu 9.10" width="300" height="187" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2009/12/11/google-chrome-beta-en-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personaliza tu usuario de facebook</title>
		<link>http://tolerantx.com/2009/06/22/personaliza-tu-usuario-de-facebook/</link>
		<comments>http://tolerantx.com/2009/06/22/personaliza-tu-usuario-de-facebook/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 20:20:18 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[usuario]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=157</guid>
		<description><![CDATA[Pues ya hace unos días, no sé exactamente cuántos, Facebook lanzó la posibilidad de personalizar el nombre de usuario de tu perfil, para hacer esto solamente diríjete a http://www.facebook.com/username/ Y si quieres saber más detalles sobre ésto da click aquí.]]></description>
			<content:encoded><![CDATA[<p>Pues ya hace unos días, no sé exactamente cuántos, Facebook lanzó la posibilidad de personalizar el nombre de usuario de tu perfil, para hacer esto solamente diríjete a <a href="http://www.facebook.com/username/" target="_blank">http://www.facebook.com/username/</a></p>
<p><a href="http://www.facebook.com/help.php?page=897" target="_blank">Y si quieres saber más detalles sobre ésto da click aquí.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2009/06/22/personaliza-tu-usuario-de-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
