Jquery Ajax POST功能无法正常工作

时间:2014-05-26 10:35:52

标签: jquery ajax

我在使用jQuery Ajax的按钮点击事件上使用验证功能。如果返回值为1,则此方法显示警告消息,否则返回true并转到button方法。 验证和警报显示事物和块按钮方法工作正常。如果不想做任何事情并且返回true则按下按钮方法不起作用。

这是我的jQuery ajax方法。

$(function () {
    $('#customerSubmit').on('click', function (event) {

        debugger;
        event.preventDefault();
        var title = $('#Title').val();
        var firstName = $('#FirstName').val();
        var phoneNo1 = $('#PhoneNo1').val();
        var Email = $('#Email').val();
        var address1 = $('#AddressLine1').val();

        $.ajax({
            type: 'POST',
            url: '/Customer/IsExistCustomer',
            data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
            success: function (data) {
                if (data == 1) {
                    alert('This Customer Already Exist');
                    return false;
                }
                else {
                    return true;
                }
            }
        });
    });
});

请帮我解决这个问题,

感谢。

2 个答案:

答案 0 :(得分:1)

您无法从异步操作同步返回。

这是关于一般问题的良好质量保证:How do I return the response from an asynchronous call?

对于您的特定问题,您应该使用按钮而不是submit元素,并在回调中执行操作(提交表单):

$(function () {
    $('#customerSubmit').on('click', function (event) {
        var form = this.form; // <- depends on your DOM
        var title = $('#Title').val();
        var firstName = $('#FirstName').val();
        var phoneNo1 = $('#PhoneNo1').val();
        var Email = $('#Email').val();
        var address1 = $('#AddressLine1').val();
        $.ajax({
            type: 'POST',
            url: '/Customer/IsExistCustomer',
            data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
            success: function (data) {
                if (data == 1) {
                    alert('This Customer Already Exist');
                }
                else {
                    form.submit(); // <- now submit the form
                }
            }
        });
    });
});

答案 1 :(得分:0)

代码中的一些问题:

  • 您正在尝试从异步函数返回值。当调用“success”时,启动ajax调用的函数已经终止。
  • 如果您处理按钮上的点击,用户仍然可以通过在&lt; input&gt;中键入ENTER / RETURN键来提交表单。领域。您应该处理表单的'submit'事件。

恕我直言,您应截取'submit'事件处理程序,preventDefault(),并执行ajax调用以提交表单,并处理错误以向用户提供某种反馈。

如果你绝对想要对服务器做两个请求而不是一个(一个要检查,一个要提交),你可以在'success'处理程序中进行第二次ajax调用:

    $.ajax({
        type: 'POST',
        url: '/Customer/IsExistCustomer',
        data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
        success: function (data) {
            if (data !== 1) {
                $.ajax({
                    type: $(form).attr("method"),
                    url: $(form).attr("action"),
                    data: $(form).serialize(),
                    success: function (data) {

                    }
                });
            }
        }
    });