Question

Je suis en train de faire de chiffrement pour le nom d'utilisateur et le mot de passe en JavaScript à l'aide de Jcryption algorithme.et le déchiffrement à l'aide de Java .dans ce processus avant de chiffrement d'achèvement du processus en JavaScript formulaire est soumis .En Java, je ne reçois pas chiffré nom d'utilisateur et mots de passe.et j'obtiens des valeurs normales, donc je suis empêché de soumettre le formulaire et le code écrit dans le formulaire de soumission après le processus de chiffrement terminé, je fais appel soumettre événement, mais la forme de soumettre plusieurs fois.me donner des idées est-il un moyen de résoudre les problèmes .ou de toute autre manière de résoudre les problèmes.

Merci D'Avance

Mon code 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='';   

/* soumettre le formulaire de code*/

// $('#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();
    }
Était-ce utile?

La solution

C'est à cause de $('form').submit();.Depuis que vous appelez la jQuery Soumettre () méthode, il appellera le gestionnaire d'événements de soumission associé causant une récursiveCycle

Changez-le pour utiliser le DOM Elément's Soumettre () méthode, qui n'entraînera pas l'invocation des gestionnaires d'événements de soumission.

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

Autres conseils

Changer votre submit bouton un bouton normal.Pour écouter la cliquez sur ce bouton et, dans ce gestionnaire d'appels $('form').submit();

La façon dont vous vous êtes fait à l'heure actuelle entraînera récursive soumet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top