Mostrar un mensaje de 'Carga de página' entre páginas
Frecuentes
Visto 794 veces
0
Tengo un form
en mi sitio que, cuando se envía, lleva al usuario de Page1.html
a Page2.html
.
Me gustaría mostrar un mensaje entre el formulario que se envía y "Página 2 cargando".
¿Alguien me puede dar un ejemplo de esto?
2 Respuestas
1
Si su formulario envía datos a través de ajax, entonces podría intentar algo así:
$('form#myform').submit(function(e) {
e.preventDefault();
$('#message').html('Sending....'); // #message may be a div that contains msg
$ajax({
url: 'url_to_script',
data: 'your_data',
success: function(res) {
// when submit data successfully then page reload
window.location = 'page2.html'
}
});
});
contestado el 22 de mayo de 12 a las 17:05
Esto parece el mismo boleto. Lo intentaré en breve. ¡¡Muchas gracias!! - miguelmcgurk
1
Lo que está buscando hacer no se puede hacer mediante el envío de un formulario estándar.
Querrá enviar el formulario usando ajax y mostrar un mensaje de "Por favor espere" mientras espera una respuesta. Una vez que se recibe la respuesta y se valida como correcta, puede redirigir al usuario a la página a la que ahora llama page2.
La forma más fácil de enviar un formulario a través de ajax es serializar a una cuerda y pasarlo a lo largo. Luego, necesitará una página para procesar los datos recibidos y devolver un OK o un ERR.
El JS necesitará entonces descifrar la siguiente acción.
Esto no se prueba, sino que se copia y pega de varios proyectos de trabajo. tendrás que descargar e incluir el json2.js
proyecto.
page1
<div id='pleaseWait'>Please Wait...</div>
<form id="theForm" onsubmit="doAjaxSubmit();">
<input type='text' name='age' id='age' />
<input type='submit' value='submit'>
</form>
<script type="text/javascript">
function doAjaxSubmit(){
var j = JSON.stringify($('#theForm').serializeObject());
$('#pleaseWait').slideDown('fast');
$.post('processor.php?j=' + encodeURIComponent(j), function(obj){
if(obj.status=='OK'){
window.location='page2.php';
}else{
$('#pleaseWait').slideUp('fast');
alert('Error: ' + obj.msg);
}
}, 'json');
return(false);
}
$.fn.serializeObject = function(){
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
</script>
procesador.php
<?php
$j=json_decode($_POST['j'], true);
if ((int)$j['age']<=0 || (int)$j['age']>120){
$result = array('status'=>'ERR', 'msg'=>'Please Enter Age');
}else{
//Do stuff with the data. Calculate, write to database, etc.
$result = array('status'=>'OK');
}
die(json_encode($result));
?>
Esto es esencialmente muy similar a la respuesta a continuación (por @thecodeparadox
), pero mi ejemplo muestra cómo pasar todo sin tener que construir manualmente su objeto de datos, muestra cómo validar en el lado de PHP y devolver los datos JSON apropiados para redirigir al usuario o mostrar un error, y utiliza animaciones para mostrar el mensaje.
contestado el 23 de mayo de 17 a las 13:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery html lightbox modal-dialog or haz tu propia pregunta.
posible duplicado de muestra el mensaje "cargando página" - Diodeus - James MacFarlane