在ajax回调之后表单提交

时间:2014-05-06 04:10:43

标签: jquery ajax

我正在尝试在提交表单之前对网站进行ajax调用。如果请求成功,我希望表单能够正常提交。

$form = $('form');

$form.submit(function() {
    $.ajax({
        url: 'http://example.com',
        data: {
            name: 'test',
            email: 'test@test.com'
        },
        async: false,
        dataType: 'jsonp',
        success: function () {
            $form.unbind('submit').submit();
        },
        error: function () {
            $form.unbind('submit').submit();
        }

    });
    return false;
});

这是一个jsfiddle - http://jsfiddle.net/5ykU5/

我希望它将reqeust发送到example.com。成功和错误回调从事件中取消绑定表单并尝试提交它。

使用这种方法会导致Jquery抛出“Uncaught TypeError:object is not function”。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我<%> 99% 100%确定您的提交按钮

name="submit"

请重命名以允许调用.submit()。

无需取消绑定,现在称为.off

success: function () {
  $form.submit(); // or $form.off("submit").submit() if you insist
},

另外你不应该使用async:false - 我猜测你是在绝望中添加了吗?

答案 1 :(得分:0)

由于您正在使用同步调用,您可以通过标志变量来执行此操作:

$form = $('form');

$form.submit(function() {
    var flag=true;
    $.ajax({
        url: 'http://example.com',
        data: {
            name: 'test',
            email: 'test@test.com'
        },
        async: false,
        dataType: 'jsonp',
        success: function () {
            flag=true;
        },
        error: function () {
            flag=false;
        }

    });

    return flag;

});
相关问题