2012-12-05 43 views
9

Używam plugin ajaxForm znaleźć hereZmiana danych w przed złożeniem

Teraz mam formularz z nazwa & hasło

Moje wymogiem jest, aby zmienić wartość hasło do jego md5 więc używam wtyczki znalezionej here

więc dla że używam tak:

$('myForm').ajaxForm({ 

    url : 'pathtosend', 
    type : 'post', 
    beforeSubmit : function(arr, $form, options){ 
     $('#password').val($.md5($('#password').val())); 
    }, 
    success : function(response, statusText, xhr, $form){ 
     alert('blah blah'); 
    } 
}); 

Teraz podczas drukowania wartość hasło w java kodu serwletu pokazuje ten, który zdałem i nie md5 wartości jak ja zrobił.

Kiedy zmienił kodowanie do kliknięcia złożyć przycisk i regulując przedstawienia swych uczyniły moje pytanie brzmi, co jest znaczenie beforeSubmit gdy dane zmieniły nie zamierza odzwierciedlać w złożyć

Odpowiedz

15

Musisz zmienić swoją funkcję beforeSubmit do tego:

beforeSubmit : function(arr, $form, options){ 
     arr.push({name:'hashed-password', value:$.md5($('#password').val())}) 
    }, 

Następnie można otworzyć zaszyfrowany-p zmienna assword w twoim servlecie.

Powodem tego jest fakt, że wartość z wprowadzania tekstu została już przetworzona przez AjaxForm i zapisana w tablicy arr.

Edit: jeśli nie chcesz, aby wysłać zwykłego tekstu hasła, można użyć oryginalnej metody jednak zmienić beforeSubmit : function(arr, $form, options){ do beforeSerialize : function() {