我正在尝试在提交表单之前对网站进行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”。
感谢您的帮助!
答案 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;
});