我正在尝试将表单提交给Campaign Monitor。他们提供this代码示例通过Ajax进行POST。为什么不使用AJAX提交此表单?
这是我的多步模态代码。
var next_step = false;
var final_step = false;
$('.next').on('click', function(e){
e.preventDefault();
if (next_step) {
$('#step-1').slideUp(function(){
$('#step-2').slideDown();
$('.next').html('Submit');// Change button text to submit
final_step = true;
});
}
next_step = true;
if (final_step) {
$('#myform').submit(function (e){
alert('submit started'); //This never fires unless I remove the preventDefault();
e.preventDefault();//But if I remove this, the page will refresh
$.getJSON(
this.action + "?callback=?",
$(this).serialize(),
function (data) {
if (data.Status === 400) {
alert('error');
} else {
alert('success');
}
})
});
}
});
在表格的最后一步,我检查final_step
是否属实,如果是的话,继续前进,通过AJAX提交表单。
问题是它只是没有做任何事情?但是,如果我从$('#myform')
中删除e.preventDefault();
,它会按照正常的方式发布表单,并将您重定向到表单网址。
我该如何解决这个问题?
删除'if(data.Status === 400){'condition并检查响应存在 – Maxx
为什么使用'?callback =?'?你在使用JSONP吗? – Maxx
'getJSON'将发出'GET'请求而不是POST。要发布POST请求,您可能想要使用$ .ajax或$ .post和JSONP参数化 – devnull69