我希望在将jQuery发送到服务器之前使用jQuery对表单中的某些数据进行加密,它可以是MD5哈希。这是一个小项目,所以我真的不需要使用SSL。
我有以下JavaScript代码,我在密码确认信息中使用$.md5
:
$(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);
});
问题是数据正在重复。我认为使用var dataToSend
覆盖正在发送的数据会使ajaxForm
仅发送该映射中的数据。但除了从dataToSend
发送数据外,它还从表单发送数据,因此我想用MD5加密的内容既加密又干净。这是请求中的内容示例:
usuario =用户安培;电子邮件=用户%40email.com&安培; senha = 12345&安培; confsenha = 12345&安培;送=安培;行动=注册&安培;名称=用户安培;电子邮件=用户%40email.com&安培; confsenha = d41d8cd98f00b204e9800998ecf8427e
我知道我必须定义一个函数beforeSerialize
,但我不知道如何操作表单数据。谁能告诉我怎么做?
答案 0 :(得分:5)
根据plugin site上的文档:
数据强>
包含应提交的额外数据的对象 沿添加表单。
along
这个词是关键。
因此,当您将数据作为选项对象的一部分传递时,数据将被序列化,并与作为表单一部分的任何数据/输入元素值一起发送。
更好的方法是散列密码值并将其分配给beforeSubmit处理程序中的同一字段或另一个隐藏字段(在您的情况下为validate函数)并完全删除dataToSend对象。
类似的东西:
没有任何隐藏元素:
function validate(){
//Other Code
pass2.val($.md5(pass2.val()));
}
表格中有隐藏元素:
function validate(){
//Other Code
$("#hdnPass").val($.md5(pass2.val()));
pass2.val("");
}