如何让表单在提交之前等待ajax完成
How to make a form wait for ajax to finish before it submits?
因此,只有当使用ajax从数据库验证条件时,我才想提交一个表单。如果条件为true,即如果用户不是居民,则我使用preventDefault()
方法,在ajax successs function
中将变量设置为true,然后调用preventDefault()
,但是,在执行此操作时,表单总是提交。即使async设置为false,它也不会等待ajax完成。这是代码。
$('#button').click(function(e) {
if ($('#ca_resident').prop('checked') == true) {
amount=$('#user-amount').val().replace(/[,]/g,"");
project_name=$('#project_name').val();
var not_resident = false;
$.ajax({
url: '/main/verify_residence/',
type: 'POST',
aysnc: false,
data: {
value: amount,
name: project_name
},
success: function(data){
$("#verify_residence").html(data);
not_resident = true;
},
dataType: 'html'
});
}
if(not_resident){
e.preventDefault();
}
});
这是行不通的。成功将在:之后发射
if(not_resident){
e.preventDefault();
}
因为它是异步的。您需要始终取消点击按钮,然后在点击成功后提交表格:
$('#button').click(function(e) {
var $form = $(this).closest('form');
if ($('#ca_resident').prop('checked') == true) {
amount=$('#user-amount').val().replace(/[,]/g,"");
project_name=$('#project_name').val();
$.ajax({
url: '/main/verify_residence/',
type: 'POST',
aysnc: false,
data: {
value: amount,
name: project_name
},
success: function(data){
$("#verify_residence").html(data);
$form.submit();
},
dataType: 'html'
});
}
e.preventDefault();
});
相关文章:
- 在等待ajax请求时显示微调器并禁用页面
- Javascript等待ajax成功后再执行代码
- 使用yii2表单等待ajax响应
- 强制jQuery Deferred等待Ajax在“”中完成;那么“;处理程序
- 网页在等待 AJAX 响应时变为非活动状态
- 如何等待ajax成功处理程序完成后再执行另一个
- 等待AJAX响应后再继续
- Javascript异步/等待ajax调用
- 等待ajax结果绑定淘汰模型
- 如何在show回调(qtip2)中等待ajax函数完成
- 等待 AJAX,然后再继续执行单独的函数
- RxJS 在处理下一个缓冲块之前等待 ajax respose
- 如何等待 ajax 请求
- 同步等待 $.ajax 调用
- Javascript nvD3图表未等待AJAX调用完成
- 等待 ajax 返回的正确方法(我不想使用成功处理程序
- jquery在等待ajax响应时加载gif
- 等待AJAX响应中的所有内容加载后再显示
- JQuery等待Ajax响应
- 等待ajax操作上的图像满载