Foros del Web » Programando para Internet » Javascript » Frameworks JS »

solucionar problema implementando AJAX

Estas en el tema de solucionar problema implementando AJAX en el foro de Frameworks JS en Foros del Web. Estoy realizando un sitio web para una empresa de venta de hardware. Ya tengo todo el trabajo bastante terminado pero quiero pulir algunos detalles y ...
  #1 (permalink)  
Antiguo 12/05/2011, 09:26
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
solucionar problema implementando AJAX

Estoy realizando un sitio web para una empresa de venta de hardware. Ya tengo todo el trabajo bastante terminado pero quiero pulir algunos detalles y se me presentaron algunas dificultades:

La estructura del encabezado y el pie de cada página se mantiene en cada una de las páginas del sitio, es decir, es igual. Al principio tenía una copia del código de dichas partes en cada una de las páginas, pero cada vez que deseaba cambiar algo, tenía que copiarlo en todas y cada una de las páginas y resultaba muy engorroso, por lo que "centralicé" estas partes en nuevos archivos .php y luego los llamo mediante un php include.

El problema es que algunas de estas partes incluyen formularios o mensajes mostrados mediante jquery UI dialog, y no logro hacer que funcione bien el procesamiento de los datos del formulario (tiene algo que ver con el action del form creo yo) ni que se muestren los mensajes del UI Dialog.

Por poner un ejemplo, en el footer, tengo un formulario que recibe un email y lo pone en la lista de distribución mensual de las ofertas. Como el footer esta en todas las paginas y es el mismo, cree un archivo "footer.php" y en cada página lo llamé con:

Código:
<?php include($_SERVER['DOCUMENT_ROOT'] . "footer.php"); ?>
Hasta ahi todo correcto, en todas las paginas aparece sin problemas. Pero cuando quiero hacer uso del formulario que está dentro del footer, me lleva a footer.php en vez de quedarse en la pagina desde la cual se envió y desplegar los mensajes correspondientes en dicha página.

footer.php:

Código:
<h3>suscríbase a nuestras ofertas</h3> 
				
    <p>Ingrese su dirección de correo debajo para suscribirse. Recibirá nuestro mailing de ofertas una vez al mes.</p>
                
    <?php
        
	if(!empty($_POST['subscribe_email']))
        {
        
	    $email = mysql_real_escape_string($_POST['subscribe_email']);
	    $checkemail = mysql_query("SELECT * FROM distribution WHERE EmailAddress = '".$email."'");
	    if(mysql_num_rows($checkemail) == 1)
	    {
		
		$volver = $_SERVER['HTTP_REFERER'];
							
		echo '<meta http-equiv="refresh" content="0;'.$volver.'" />';
	    
    ?>
                                
		<script>
								    
		    $(document).ready(function(){
		    var mensaje = $('<div title="Error"><p>La dirección de correo ingresada ya se encuentra en nuestra lista de distribución.</p></div>');
		    mensaje.dialog( {modal: true, beforeClose: function(event, ui) { document.location.reload(); } } );
		    });
		    
		</script>
                                                                                        
    <?php
	    }
	    else
	    {
		
		$registerquery = mysql_query("INSERT INTO distribution (EmailAddress) VALUES('".$email."')");
		if($registerquery)
		{
		    
		    $volver = $_SERVER['HTTP_REFERER'];
							
		    echo '<meta http-equiv="refresh" content="0;'.$volver.'" />';
							
    ?>
								
		    <script>
								    
			$(document).ready(function(){
			var mensaje = $('<div title="Hecho"><p>A partir de ahora, recibirás las ofertas a tu dirección de correo una vez al mes.</p></div>');
			mensaje.dialog( {modal: true, beforeClose: function(event, ui) { document.location.reload(); } } );
			});
			
		    </script>
                                                         
    <?php
					
		}
		else
		{
		    
		    $volver = $_SERVER['HTTP_REFERER'];
							
		    echo '<meta http-equiv="refresh" content="0;'.$volver.'" />';
		
    ?>
								
		    <script>
								    
			$(document).ready(function(){
			var mensaje = $('<div title="Error"><p>Lo sentimos, pero ha habido un problema. Inténtalo de nuevo.</p></div>');
			mensaje.dialog( {modal: true, beforeClose: function(event, ui) { document.location.reload(); } } );
			});
			
		    </script>
                                                         
    <?php
                             
		}
	    }
	}
        else
        {
	    
    ?>
                    
        <form action="footer.php" method="post" name="subscribeForm" id="subscribeForm" class="formulario"> 
            <fieldset> 
                <div> 
                    <input type="text" name="subscribe_email" id="subscribe_email" class="fl" />  
                    <a id="newsletterSignup" class="blueButton"><img src="images/bluebutton_img.png" alt="Suscríbase" /></a>
                </div> 
            </fieldset> 
        </form>
        <p> 
            <a href="#" title="Términos de uso">Términos de uso</a> 
            &nbsp;&nbsp;|&nbsp;&nbsp;
            <a href="#" title="Política de privacidad">Política de privacidad</a> 
        </p> 
                    
    <?php
        }
    ?>
Me han dicho que es posible hacer esto mediante AJAX, que no necesitaría, por ejemplo, refrescar la pagina despues de enviar el formulario.

Agradezco toda ayuda que me puedan dar, ya que no conozco nada sobre ajax.
  #2 (permalink)  
Antiguo 12/05/2011, 09:48
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: solucionar problema implementando AJAX

POST DUPLICADO: http://www.forosdelweb.com/f77/proce...n-ajax-911932/

por favor no duplicar temas, edita el tema si deseas cambiar el planteamiento o pide a un moderador que lo borre reportándolo.

con respecto a tu pregunta, puedes enviar los formularios con AJAX, esto te evita la redirección de la página, pero representa que la web dependa completamente de JS, al menos de que uses iframes ocultos para enviar los formularios, suerte
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.