He estado usando el cargador proporcionado por http://www.hoppinger.com/blog/2010/05/28/file-upload-progress-bar-with-phpapc-and-javascript/ y desde entonces lo he aplicado a < a href = "http://test.elitetradersgroup.com.au/broker-tools/amazon-upload/" rel = "nofollow"> uno de mis formularios y mientras el medidor de progreso funciona, la función de envío no dispara si la carga se ha realizado correctamente.

El código completo de lo que estoy usando está a continuación:

JS
get_progress.php
uploader.php

Por lo que puedo decir, en mi experiencia limitada, esta es la función que maneja el envío:

postUpload : function(o_data)
{
    // Loop through every input and set json response in hidden input
    this.a_inputs.each((function(o_input)
        {
            var s_name = o_input.get('name');
            var s_value = '';

            if(o_file = o_data.files[s_name])
            {
                s_value = JSON.encode(o_file);
            }


            var o_jsonInput = new Element('input',{'type': 'hidden','name':o_input.origName,'value':s_value}).replaces(o_input);


        }).bind(this));

    // Make form "original" again by purging elements and resetting attributes
    this.revertSubmit();
    this.o_form.submit();
},

Me di cuenta de que el envío era this.o_form.submit(); en lugar de this.form.submit(); y lo comprobé y él ha declarado o_form : {} en la parte superior de la clase, así que supongo que su sintaxis es correcta pero no tengo idea real.

Antes de implementar este rastreador de progreso, el formulario funcionaba perfectamente, por lo que esto me ha frustrado bastante.

Esencialmente, lo que salió mal, solo puedo asumir que es algo tan simple como un ; faltante o un error similar.

Si obtiene un 404 en el envío, significa que funcionó. He desbloqueado temporalmente la página para solucionar problemas.

Como puede ser relevante, mi sitio usa WordPress.

0
Joshua 21 may. 2012 a las 06:04

1 respuesta

La mejor respuesta

Resultó que javascript no estaba agregando la etiqueta APC_UPLOAD_PROGRESS al formulario, así que agregué el siguiente jQuery después de la inicialización:

<script type="text/javascript">
    jQuery(document).ready(function(){

        var id = jQuery("form").attr('id');

        jQuery("form").submit(function(){

            jQuery(this).append("<input type=\"hidden\" name=\"APC_UPLOAD_PROGRESS\" value=\""+id+"\" />");

        });

    });

</script>

Y ahora está todo bien.

0
Joshua 22 may. 2012 a las 04:50