1

我有一个带有用户名和密码的登录表单。我与用户一起向 Web 服务发帖并作为参数传递,然后我取回该用户的 ID。

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

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

$('#form1').submit(function() {         
        $('#sajax-loader').show();        
        $.ajax({
            类型:“发布”,
            contentType: "应用程序/json; charset=utf-8",
            数据:'{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
            url: "URL.asmx/validate",
            数据类型:“json”,
            成功:函数(数据){
                $('#id').val(data.d);                
                $('#sajax-loader').hide();                                             
                $('#form1').post();
                $('#login-notification').show();                                
            },
            错误:函数(错误){
                $('#login-notification').html("发生错误" + err);
            }
        });
        返回假;
    });

显然这是错误的方法,因为我在提交时没有得到任何响应。

有人可以指导我正确的方向吗?就如何调整我在这里的提交功能给出一些建议,或者可能是一种完全不同的更实用的方法?

4

1 回答 1

3

开始将在您和其余代码未执行的那一点return false停止函数的执行。所以,把你放在最后。submit()returnreturn 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() },

于 2012-08-08T13:51:54.237 回答