Pregunta

Estoy cifrando el nombre de usuario y la contraseña en JavaScript utilizando el algoritmo Jcryption.y descifrado usando Java.en ese proceso antes de que se envíe la finalización del proceso de cifrado en formato JavaScript. En Java no obtengo nombres de usuario ni contraseñas cifrados.y obtengo valores normales, por lo que se me impide enviar el formulario y escribo el código en el envío del formulario después de que se completa el proceso de cifrado. Estoy llamando al evento de envío pero enviando el formulario varias veces.Dame sugerencias, ¿hay alguna forma de resolver los problemas? O alguna forma alternativa de resolverlos.

Gracias de antemano

Mi código HTML

    <form name="frm" method="post" action="/xsl-portal/xlogin" onSubmit="" target="_parent"  autocomplete="off"> 
       <input type="text" maxlength="45"  name="eid1" id="eid1" />
       <input type="hidden" maxlength="45" id="eid" name="eid" />
       <input type="password" id="pw" name="pw" />
       <input type="image" src="home-images/button-submit.png" id="submitButton" value="Submit" name="image"  onclick="submitButtonClick();" />

<input type="hidden" value="" name="submit" id="submit"/> 
    </form>
Javascript code
    var keys='';

    function getKeys() {
        $.jCryption.getKeys("/sakai-login-tool/EncryptionServlet?generateKeypair=true", function(
            receivedKeys) {
            keys = receivedKeys;        

        });
    }
    getKeys();
    var encryptedUser='';
    var encryptedPassword='';   

/* código de envío del formulario*/

// $('#submitButton').on('click',function(){
            function submitButtonClick(){ 



            }
        // });

$('form').submit(function(e) {
               e.preventDefault();
                var user=$('#eid1').val();
                    var password=$('#pw').val();

                    encryptionProcess(user,password).pipe(applyValues).pipe(function(){

                        console.log("eid"+$('#eid').val());
                    console.log("pw"+$('#pw').val());
                    $('form').submit();
                    });
    })

;
    function encryptionProcess(user,password){
        var d= $.Deferred();
        setTimeout(function() {
            $.jCryption.encrypt(user, keys, function(encrypted) {
                encryptedUser = encrypted;
                console.log("printing user encryption:"+encryptedUser);
            });
            $.jCryption.encrypt(password, keys, function(encryptedPasswd) {
                encryptedPassword = encryptedPasswd;                    /**
                 * As both userName and password are encrypted now Submit login
                 */
                 console.log("printing password encryption:"+encryptedPassword);
                });
              d.resolve();
        }, 10);
    return d.promise();         
    }
    function applyValues(){
        var d1= $.Deferred();
        setTimeout(function() {
            $('#eid').val(encryptedUser);
            $('#pw').val(encryptedPassword);
          d1.resolve();
        }, 10);
        return d1.promise();
    }
¿Fue útil?

Solución

Se debe a $('form').submit();.Ya que está llamando al jQuery Enviar () método, llamará al controlador de eventos de envío asociado que causó un recursivociclo

Cámbelo para usar el elemento DOM Enviar () MÉTODO, que no resultará en la invocación de enviar controladores de eventos.

$('form')[0].submit();
//or e.target.submit();

Otros consejos

Cambia tu submit botón para que sea un botón normal.Escuche el clic en este botón y dentro de esa llamada del controlador $('form').submit();

La forma en que lo está haciendo actualmente dará como resultado envíos recursivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top