2011-04-17 39 views
5

Tengo una página con un iframe. En el iframe hay un botón de enviar. Cuando hago clic en el botón de enviar, quiero que se actualice la ventana principal. Esto es lo que he hecho hasta ahora, y funciona (el código JavaScript se encuentra en la ventana principal):Volver a cargar la página después de enviarla en iframe (javascript/jquery)

var myFrame = $('iframe'); 
myFrame.load(function() { 
myFrame.contents().find('#publish').click(function() { 

    myFrame.load(function() { 
    location.reload(); 
    }); 

}); 
}); 

el código funciona. Pero creo que la recarga del iframe es innecesaria. ¿Existe una forma mejor de detectar cuándo se completa el "envío"?

(no puedo recargar la página solo por “onclick” o relé de demora. Tengo que estar seguro de que el sometimiento de la forma es terminado)

+0

ventana principal que se actualizará? o ventana principal para volver a cargar? ¿Cuál es la actualización? –

+0

¿Cómo resuelves esto al final? –

Respuesta

0

Suponiendo publish es único sólo tiene que hacerlo :

$(document).ready(function(){ 
    $('#publish').live('click', function(e){ 
    e.preventDefault(); 
    //Do whatever you want here 
    }); 
}); 

Aviso del live se unirá el enlace incluso a publish en tiempo de ejecución.

+0

Hola Naveed, te perdiste "});". Pero no veo cómo esta función me ayudará a enviar el formulario y volver a cargar la página. Quiero una función para detectar cuando se envía el envío. – Hakan

+0

@Hakan, gracias arreglado. Déjame verlo de nuevo. –

0

Usted podría tener el envío del formulario devuelve un bloque de JS:

<html> 
<script> 
window.parent.document.jQueryFunction(); 
</script> 
</html> 

o, si usted está abierto a plug-in, se puede usar el método ajaxSubmit() de the jQuery Form Plugin.

$myFrame.contents().find('form').ajaxForm({ 
    success: function() { 
    // update parent 
    } 
}); 
0
$("#publish").click(function() { 
    $('#inputs').ajaxSubmit({ 
     success:function(){ 
      //alert("Reload called"); 
      parent.location.reload(); 
     } 
    }); 
}); 

Esto funcionó.

+0

Bienvenido a SO. No hay una referencia específica a Ajax en la pregunta. También puede ser un envío de formulario html estándar. –

Cuestiones relacionadas