Javascript 在beforeSybmit上使用jQuery加密密码
在使用ajaxSubmit传输之前,我无法加密密码 登录密码是输入密码清除值 登录\u密码\u md5被隐藏输入 在我的警报中,密码是加密的,所以当我查看php文件请求时,我可以清楚地看到它 JavaScript/jQuery代码:Javascript 在beforeSybmit上使用jQuery加密密码,javascript,jquery,md5,Javascript,Jquery,Md5,在使用ajaxSubmit传输之前,我无法加密密码 登录密码是输入密码清除值 登录\u密码\u md5被隐藏输入 在我的警报中,密码是加密的,所以当我查看php文件请求时,我可以清楚地看到它 JavaScript/jQuery代码: var loginSubmit = function () { $(this).ajaxSubmit({ beforeSubmit: function (p1, p2, p3, p4) { // Cr
var loginSubmit = function () {
$(this).ajaxSubmit({
beforeSubmit: function (p1, p2, p3, p4) {
// Crypt
alert("cryptPassword");
login_password_md5 = $().crypt( {
method: 'md5',
source: $('#login_password').val()
});
$("#login_password_md5").val(login_password_md5);
passmd5 = $("#login_password_md5").val();
alert(passmd5);
$("#login_password").val("");
var form = $("#form_login");
// Validation
$(form).validate(rulesLogin);
if (!$(form).valid())
return false;
$("#btn_login").hide();
$("#login_loader").show();
return true;
},
success: function (p1, p2, p3, p4) {
// Data JSon Correction
var dataX = "";
for(i in p1) {
dataX += p1[i];
}
var result = JSON.parse(dataX);
//var result = p1;
var xmlHttp = p2;
var form = p4;
// Result is null
if(result == null || result == "") {
$("#login_loader").hide();
$("#btn_login").show();
$("#login_password").val("");
$("#login_email").val("");
alert("(ERROR-LOGIN-1000) : Result is NULL !");
return false;
}
// Success is false OR exception is true
if(result.success != true || result.exception != false || result.status != 0) {
$("#login_loader").hide();
$("#btn_login").show();
$("#login_password").val("");
$("#login_email").val("");
alert("(ERROR-LOGIN-1001-" + result.status + ") : " + result.message);
return false;
}
// AccessLevel : Suspended account
if(result.data.AccessLevel == 10) {
$("#login_loader").hide();
$("#btn_login").show();
$("#login_password").val("");
$("#login_email").val("");
alert("(ERROR-LOGIN-1002) : Your account has been suspended by an Administrator ! You can contact customer service using the Contact link at the bottom of this page.");
return false;
}
// AccessLevel : User deleted account
if(result.data.AccessLevel == 20) {
$("#login_loader").hide();
$("#btn_login").show();
$("#login_password").val("");
$("#login_email").val("");
alert("(ERROR-LOGIN-1003) : You deleted your account. You can contact customer service using the Contact link at the bottom of this page.");
return false;
} else if (result.data.AccessLevel >= 30) {
top.location.href="/site";
} else {
$("#login_loader").hide();
$("#btn_login").show();
$("#login_password").val("");
$("#login_email").val("");
alert("(ERROR-LOGIN-1004) : AccessLevel error ! Please try again.");
return false;
}
}
});
return false;
};
谢谢你的帮助 没有测试为什么隐藏文本值没有使用加密密码设置,但为我制作了一个简单的代码片段:
$("form").ajaxForm({
beforeSubmit: function(data) {
$(data).each(function(i, field) {
if(field.name == "password") {
var encrypted = $().crypt({
method: "md5",
source: field.value
});
field.value = encrypted;
}
});
return true;
}
});
实际上,“beforeSubmit”允许您在提交前阻止/修改表单数据。返回false停止提交,返回true使调用继续。您可以随意截取和修改数据。请注意,您必须在提交的字段上设置“name”属性,否则它们在传递到“beforesmit”的“data”中不可用
制作了一个小演示(发布到Google将不起作用,但请查看inspector内部的http调用,以查看加密值是否正确发布):
希望这有帮助。你能解释得更清楚些吗?您想在通过ajax发送之前以某种方式(md5或类似方式)加密一个值(密码)?是的,我会在发送之前尝试加密密码。警报(passmd5)显示加密密码,或者,当我查看Firebug时,隐藏输入####登录password_md5的值为空。在尝试回答之前,您需要在某个“外部”的隐藏字段上设置加密密码值逻辑还是只需要将其与其他表单数据一起传递?如果您有一个解决方案可以在不使用隐藏输入的情况下对其进行加密传递,那么我使用它只是为了尝试调试,因为我不明白为什么$(“#login_password_md5”).val(login_password_md5)在提交之前没有真正分配加密密码。感谢