Changing the data in before submit

Ankur Verma picture Ankur Verma · Dec 5, 2012 · Viewed 11.1k times · Source

I am using the ajaxForm plugin found here

Now i have a form with username & password

My requirement is to change the value of password field to its md5 so for that I am using the plugin found here

so for that I am using like this :

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

Now when I print the value of password in java servlet code it shows the one that I passed and not the md5 of the value as I did.

When I changed the coding to the click of the submit button and manipulating the submit its done so my question is what is the significance of beforeSubmit when the data changed is not going to reflect in the submit

Answer

SlashmanX picture SlashmanX · Dec 5, 2012

You need to change your beforeSubmit function to this:

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

Then you can access the hashed-password variable in your servlet.

The reason for this is that the value from the text input has already been processed by AjaxForm and stored in the arr array.

Edit: if you don't want to send the plaintext password, you can use your original method but change beforeSubmit : function(arr, $form, options){ to beforeSerialize : function() {