2012-12-05 35 views
9

Tôi đang sử dụng plugin ajaxForm tìm thấy hereThay đổi dữ liệu trước khi nộp

Bây giờ tôi có một hình thức với Tên truy nhập & mật khẩu

Yêu cầu của tôi là thay đổi giá trị của mật khẩu trường để md5 để tôi sử dụng plugin được tìm thấy here

như vậy cho rằng tôi đang sử dụng như thế này:

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

Bây giờ khi tôi in giá trị của mật khẩu trong java mã servlet nó cho thấy một trong đó tôi đi ngang qua và không phải là md5 giá trị như tôi đã làm.

Khi tôi đã thay đổi mã hóa để các nhấp chuột của nộp nút và thao tác nộp thực hiện nó vì vậy câu hỏi của tôi là tầm quan trọng của beforeSubmit khi dữ liệu thay đổi sẽ không là những gì phản ánh trong nộp

Trả lời

15

bạn cần thay đổi chức năng beforeSubmit của bạn như thế này:

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

Sau đó, bạn có thể truy cập băm-p biến assword trong servlet của bạn.

Lý do cho điều này là giá trị từ đầu vào văn bản đã được xử lý bởi AjaxForm và được lưu trữ trong mảng arr.

Chỉnh sửa: nếu bạn không muốn gửi mật khẩu thô, bạn có thể sử dụng phương thức gốc nhưng thay đổi beforeSubmit : function(arr, $form, options){ thành beforeSerialize : function() {

Các vấn đề liên quan