Domanda

Sto facendo la crittografia per il nome utente e la password in JavaScript usando l'algoritmo di jcryption.e decrittografia usando Java.In tale processo prima che il completamento del processo di crittografia nel modulo JavaScript venga inviato. In Java non sto ricevendo username e password crittografati.E sto ottenendo valori normali, quindi sono impedito di inviare la forma e il codice scritto nel modulo inviare dopo aver completato il processo di crittografia, sto chiamando l'evento di invio, ma formano la presentazione di più volte. Dammi suggerimenti C'è un modo per risolvere problemi. O qualsiasi modo alternativo per risolvere problemi.

Grazie in anticipo

Il mio codice 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='';   
.

/ * Modulo Invia codice * /

// $('#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();
    }
.

È stato utile?

Soluzione

è a causa del $('form').submit();.Dal momento che stai chiamando il jquery invio () metodo, chiamerà il gestore di eventi di invio associato che causa un ricorsivoCiclo

Cambiarlo per utilizzare il Dom Element Invia () Metodo, che non comporterà l'invocazione dei gestori di eventi di invio.

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

Altri suggerimenti

Cambia il pulsante submit per essere un pulsante normale.Ascolta per il clic su questo pulsante e all'interno di quel gestore Chiama $('form').submit();

Il modo in cui stai facendo al momento comporterà invio di sostegni ricorsivi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top