سؤال

أفعل التشفير لاسم المستخدم وكلمة المرور في جافا سكريبت باستخدام خوارزمية جكريبتيون.وفك التشفير باستخدام جافا .في هذه العملية قبل الانتهاء من عملية التشفير في شكل جافا سكريبت يتم تقديمها .وأنا على الحصول على القيم العادية لذلك أنا منعت شكل تقديم ورمز مكتوب في شكل تقديم بعد الانتهاء من عملية التشفير أنا أدعو تقديم الحدث ولكن شكل تقديم عدة مرات.أعطني اقتراحات هل هناك أي طريقة لحل القضايا .أو أي طريقة بديلة لحل المشكلات.

شكرا مقدما

كود أتش تي أم أل الخاص بي

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

/ * نموذج إرسال الرمز*/

// $('#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();
    }
هل كانت مفيدة؟

المحلول

هو بسبب $('form').submit();.منذ كنت تدعو مسج إرسال() الطريقة ، فإنه سيتم استدعاء معالج الحدث إرسال المرتبطة مما تسبب في دورة متكررة

قم بتغييره لاستخدام عنصر دوم إرسال() الطريقة ، والتي لن تؤدي إلى استدعاء معالجات الأحداث الإرسال.

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

نصائح أخرى

تغيير الخاص بك submit زر ليكون زر عادي.استمع للنقرة على هذا الزر وضمن مكالمة المعالج هذه $('form').submit();

الطريقة التي تقوم بها في الوقت الحاضر سوف يؤدي إلى تقديم العودية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top