2011-12-06 14 views
12

Ahora mismo tengo un formulario donde el usuario ingresa la información. Es más que una función de jQuery ajax procesada y configurada en return false;, por lo que no se recargará ninguna página después de que el usuario envíe un formulario. Aunque necesito volver a cargar la página, pero si elimino return false;, actualiza la página antes de que se muestre el mensaje de éxito (este mensaje se muestra después de que el usuario envíe datos).Volver a cargar la página después de que se muestre el mensaje, jQuery

 $.ajax({ 
     type: "POST", 
     url: "scripts/process.php", 
     data: dataString, 
     success: function() { 
     $("#st_message").html("<p> Your article was successfully added!</p>"); 
     //I need to reload page after the above message is shown 
     } 
    }); 
    return false; 

Entonces, ¿cómo puedo volver a cargar la página después de que se muestra el mensaje <p> Your article was successfully added!</p>, con un ligero retraso decir 2 - 3 segundos, por lo que el usuario realmente puede leer el mensaje.

Respuesta

22

Se podría añadir un retardo mediante el uso de la función setTimeout(), tales como:

// This will reload the page after a delay of 3 seconds 
window.setTimeout(function(){location.reload()},3000) 

para sus necesidades:

$.ajax({ 
     type: "POST", 
     url: "scripts/process.php", 
     data: dataString, 
     success: function() { 
      $("#st_message").html("<p> Your article was successfully added!</p>"); 
      window.setTimeout(function(){location.reload()},3000) 
     } 
}); 
return false; 

Working Example

+0

por alguna razón no lo hace no funciona, ¿podría ser porque el resultado es falso? – Ilja

3

lo hacen con algo como:

function delayedRedirect(){ 
    window.location = "/index.php" 
} 

setTimeout('delayedRedirect()', 3000) 

setTimeout se utiliza para retrasar la llamada a la función de redirección, en este caso, puede redirigir algún lugar a una nueva URL (en caso de que necesite que también).

De lo contrario, use location.reload() para volver a cargar la página.

2

¿Quieres decir algo como: window.location.reload() en JavaScript

+0

por alguna razón, no funciona, ¿podría ser debido a la devolución falsa? – Ilja

2

darle usando

setTimeout("window.location='yourpage.php'",3000); 

en el código:

$.ajax({ 
     type: "POST", 
     url: "scripts/process.php", 
     data: dataString, 
     success: function() { 
     $("#st_message").html("<p> Your article was successfully added!</p>"); 
     setTimeout("window.location='yourpage.php'",3000);//reload after 3 sec. 
     } 
     }); 
return false; 
+0

por alguna razón, no funciona, ¿podría ser porque el resultado es falso? – Ilja

+0

intenté ese código de redirección aquí y está funcionando bien ... – mithunsatheesh

+0

por alguna razón que necesitaba agregarlo antes de $ ("# st_message"). Htm ... y ahora funciona gracias))) – Ilja

1

Utilice el método setTimeout para obtener el retraso, y el método reload para recargar la página. Tenga en cuenta el parámetro true en la llamada reload para asegurarse de que la página realmente se recarga y no se repinta desde la caché.

window.setTimeout(
    function(){ 
    location.reload(true) 
    }, 
    3000 
); 
+0

por alguna razón, no funciona, ¿podría ser porque el resultado es falso? – Ilja

+0

No, eso solo podría ser un problema si intentara volver a cargar la página de inmediato. Además, cambiar el orden del código como anotó en otro comentario no haría ninguna diferencia. Tal vez un error tipográfico? – Guffa

1
$.ajax({ 
    type: "POST", 
    url: "scripts/process.php", 
    data: dataString, 
    success: function() { 
    var miliseconds = 2000; 

    $("#st_message").html("<p> Your article was successfully added!</p>"); 
    setTimeout("window.location=window.location", miliseconds); 
    //I need to reload page after the above message is shown 
    } 
}); 
1
<script type="text/javascript"> 
// 
//your action here 
// 
window.setTimeout(function(){self.parent.location="?list"},3000);//after 3 sec go to (?list or example.html page) 
return false; 
</script> 
1

El uso de tiempo de espera es una muy mala idea.

Cuestiones relacionadas