12

我正在使用此处找到的 ajaxForm 插件

现在我有一个带有用户名密码的表单

我的要求是将密码字段的值更改为它的md5,因此我使用的是在此处找到的插件

所以为此我使用的是这样的:

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

现在,当我在java servlet 代码中打印密码的值时,它显示的是我传递的那个,而不是我所做的值的 md5。

当我将编码更改为单击提交按钮并操作提交时,我的问题是当数据更改不会反映提交中时, beforeSubmit的意义是什么

4

1 回答 1

20

您需要将 beforeSubmit 函数更改为:

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

然后,您可以访问 servlet 中的 hashed-password 变量。

原因是来自文本输入的值已经被 AjaxForm 处理并存储在 arr 数组中。

编辑:如果你不想发送明文密码,你可以使用你原来的方法,但beforeSubmit : function(arr, $form, options){改为beforeSerialize : function() {

于 2012-12-05T10:28:20.073 回答