我最初在我的ajax回调中有return true/false
,并且意识到它可能不在正确的上下文中被调用,所以我重写了我的函数,如下所示,但它仍然不起作用。提交变量是否没有从回调函数中传递?确认(if .btn-danger
)工作,但不只是如果你打提交并且不需要确认)如何从ajax回调中控制表单提交?
$('#form').submit(function(e){
var submit = false;
if($('.btn-danger').length){
submit = true;
} else {
$.ajax({
url: base_path+"ajax/myajaxfile",
type: "post",
data: {
data1 : $("#amount").val(),
data2 : $("option:selected").val()
},
dataType: "json",
success: function(data) {
if (data.needconfirmation === 'true'){
$('#edit-submit').val("Confirm");
$('#edit-submit').removeClass("btn-primary");
$('#edit-submit').addClass("btn-danger");
$('#payment-form').after('<span class="warning"> Do you really wanna?</span>');
} else {
submit = true;
}
},
error: function(data) {
alert("an error has occurred");
}
});
}
if (submit){
return true;
} else {
return false;
}
});
你的代码看起来像有时你想传统的提交,而其他人你想要一个AJAX提交。这听起来不对,是吗?如果不是,那么当.btn-danger具有长度时,你想要发生什么?如果没有,你想要发生什么? – Colin
表单本身是通过表单上的提交按钮按常规提交的。 ajax调用进行数据库检查,以确定在提交之前是否应该要求用户确认他们的操作,否则应该正常进行。我想也许我需要做点击,而不是表单提交,然后以编程方式调用表单提交内的回调... – Damon