我想在发送到服务器之前使用jQuery加密表单中的某些数据,它可以是MD5哈希.这是一个小项目,所以我真的不需要使用SSL.
我$.md5在密码确认信息中使用了以下JavaScript代码:
$(document).ready(function() {
var dataToSend = {};
dataToSend['action'] = 'signup';
dataToSend['name'] = name.val();
dataToSend['email'] = email.val();
dataToSend['confsenha'] = $.md5(pass2.val());
var options = {
target: '#error',
url: 'insert.php',
beforeSubmit: validate,
data: dataToSend,
success: function(resposta) {
$('#message').html(resposta);
}
};
$('#customForm').ajaxForm(options);
});
Run Code Online (Sandbox Code Playgroud)
问题是数据是重复的.我认为通过使用var来覆盖正在发送的数据dataToSend会使得ajaxForm只发送该映射中的数据.但除了发送数据外dataToSend,它还从表单发送数据,因此我想用MD5加密的内容既加密又干净.这是请求中的内容示例:
usuario =用户电子邮件=用户%40email.com&senha = 12345&confsenha = 12345&发送=&行动=注册&名称=用户电子邮件=用户%40email.com&confsenha = d41d8cd98f00b204e9800998ecf8427e
我知道我必须定义一个函数beforeSerialize,但我不知道如何操作表单数据.谁能告诉我怎么做?
根据插件网站上的文档:
data
包含应与表单一起提交的额外数据的对象 .
这个词along就是关键.因此,当您将数据作为选项对象的一部分传递时,数据将被序列化,并与作为表单一部分的任何数据/输入元素值一起发送.
更好的方法是散列密码值并将其分配给beforeSubmit处理程序中的同一字段或另一个隐藏字段(在您的情况下为validate函数)并完全删除dataToSend对象.
就像是:
没有任何隐藏的元素:
function validate(){
//Other Code
pass2.val($.md5(pass2.val()));
}
Run Code Online (Sandbox Code Playgroud)
使用表单中的隐藏元素:
function validate(){
//Other Code
$("#hdnPass").val($.md5(pass2.val()));
pass2.val("");
}
Run Code Online (Sandbox Code Playgroud)