提交表单会触发ajax调用,该调用会在成功时发布到操作页面

时间:2012-08-08 13:51:02

标签: javascript jquery ajax

我有一个带有用户名和密码的登录表单。 我与用户发布了一个Web服务的帖子,并作为参数传递,我找回了该用户的ID。

我想要实现的是在表单提交时,进行ajax调用,然后填充ID字段(我需要),然后使用$('#form1').post();提交表单。

为了防止默认行为,我在return false;事件的开头有一个.submit()

$('#form1').submit(function() {         
        $('#sajax-loader').show();        
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
            url: "URL.asmx/validate",
            dataType: "json",
            success: function (data) {
                $('#id').val(data.d);                
                $('#sajax-loader').hide();                                             
                $('#form1').post();
                $('#login-notification').show();                                
            },
            error: function (err) {
                $('#login-notification').html("An Error Occured " + err);
            }
        });
        return false; 
    });

显然这是错误的方法,因为我在提交时没有收到任何回复。

有人可以指导我朝正确的方向发展吗?提供一些关于如何调整我在这里提交函数的建议,或者可能是一种完全不同的更实用的方法?

1 个答案:

答案 0 :(得分:3)

开始return false将停止submit()函数的执行,此时您return并且其余代码未执行。因此,请将return false放在最后。

另外,使用 .preventDefault() 会停止默认表单提交行为。

$('#form1').submit(function(e) { 

        // instead of return false
        // use e.preventDefault()           

        e.preventDefault();
        $('#sajax-loader').show();        
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
            url: "URL.asmx/validate",
            dataType: "json",
            success: function (data) {
                $('#id').val(data.d);                
                $('#sajax-loader').hide();                                             
                $('#form1').post();
                $('#login-notification').show();                                
            },
            error: function (err) {
                $('#login-notification').html("An Error Occured " + err);
            }
        });
    });

还有一件事

而不是

data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',

你可以使用:

data: {user: $("#user").val() ,pass: $("#pass").val() },