我已经通过ajax(jquery)构建了一个简单的登录表单,但是没有存储提交的值(用于登录目的的用户电子邮件地址,而不是密码)。因此,用户第二次尝试登录时,他必须编写完整的电子邮件地址,而不是使用存储的电子邮件地址。
这是正常的ajax表单提交和(更重要的)是否有ajax / jquery解决方案,以便浏览器“记住”提交的值?
if($(this).attr('href')=="#login")
{
$.ajax({
type: "POST",
url: "http://www.xyz.com/register",
data:({
email : $('#email').val(),
password: $('#password').val()
}),
success: function(result)
{
if(result=='ok')
{
window.location = 'http://www.xyz.com/123';
}
else
{
$('#result').empty().addClass('error')
.append('Something is wrong.');
}
}
});
return false;
}
答案 0 :(得分:1)
您是否直接在某些UI事件的响应中执行AJAX请求?我可以根据你的代码假设它是当用户点击某种“登录”链接时发生的。因此,登录表单本身不是提交,就像通常没有涉及AJAX一样。这很可能是阻止浏览器将表单注册为填充和放大的原因。发送,并提供记住其领域的内容。
我建议您截取表单的submit()事件并在其中执行AJAX查询:
$("#loginForm").submit(function(event)
{
event.preventDefault();
$.ajax({
type: "POST",
url: "http://www.xyz.com/register",
data:({
email : $('#email').val(),
password: $('#password').val()
}),
success: function(result)
{
if(result=='ok')
{
window.location = 'http://www.xyz.com/123';
}
else
{
$('#result').empty().addClass('error')
.append('Something is wrong.');
}
}
});
return false;
}
preventDefault()
调用将覆盖表单的默认提交行为,并允许您执行AJAX请求。
现在您可以添加一个普通的登录按钮(“提交”类型的HTML“输入”标签),也可以手动提交表单以回复您点击已有的链接:
$("a[href='#login']").click(function () { $("#loginForm").submit(); });