Mostrar un mensaje de 'Carga de página' entre páginas

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?

preguntado el 22 de mayo de 12 a las 17:05

2 Respuestas

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

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 or haz tu propia pregunta.