通过Ajax / jQuery提交表单

时间:2010-10-06 14:35:47

标签: jquery ajax forms

我已经通过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;
}

1 个答案:

答案 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(); });