为什么获胜'这个表单是用AJAX提交的吗
Why won't this form submit with AJAX?
我正试图向Campaign Monitor提交一份表格。他们通过Ajax向POST提供了这个代码示例。
这是我的多步骤模态代码。
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
是否为true,如果为true,则继续通过ajax提交表单。
问题是它什么都不做?但是,如果我从$('#myform')
中删除e.preventDefault();
,它将正常发布表单,并将您重定向到表单URL。
我该怎么解决这个问题?
您当前正在做的是连接一个onsubmit处理程序。未调用提交。
$('#myform').submit(function (e){ });
和是一样的
<form action="#" method="post" onsubmit="return someFunction()">
这与。。。
$('#myForm').on('submit', function(e){});
您永远不会提交表格。
您想要的是使用Ajax将数据发布到服务器,而不是提交表单
你可以这样做:
$.ajax({
type: "POST",
url: "SomeUrl.aspx",
data: dataString,
success: function() {
//display message back to user here
}
});
dataString将替换为您发布的值。
$('#myform').submit(function (e){
只需注册一个事件处理程序并将其附加到"myform"的"submit"事件,实际上并不会导致提交。这意味着您表示希望每次提交表单时都运行此函数。此处理程序函数应位于$('.next').on('click', function(e){
块的外部。就在它下面就可以了。
如果您希望在$('.next').on('click', function(e){
块内提交表格,请写下:
$('#myform').submit();
这实际上会触发表单提交。
请参阅https://api.jquery.com/submit/有关"submit"的不同方法签名实际作用的更多信息。
此行:$('#myform').submit(function (e) {
将作为参数传递的函数注册为表单提交事件的处理程序,并且不调用提交操作。我不确定这是否是问题所在,尽管我建议在向导流之外使用preventDefault()
(例如
$(document).ready(function() {
$("#form").submit(function(e) {
e.preventDefault();
}
});
)
然后在if(final_step)
内只做post
,而不用担心形式。
此外,如果你不想使用表单的功能,最好不要在表单中设置提交按钮。只需创建一个带有发送数据的点击事件的元素,而不是注册到表单的提交事件
我不确定,但我总是在点击元素后执行$('#form').submit()
,并在其他地方捕获此事件(例如通过$('#form').on('submit', function () { .. });
(。
- 表单不会通过ajax提交
- 使用Ajax提交表单
- 如何创建动态ajax提交表单
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- Ajax提交多值
- jquery通过ajax验证电子邮件,然后再通过ajax提交表单
- 检测ajax提交
- 带有两个变量函数的Ajax提交表单
- 从AJAX提交中拆分数组$_FILES
- 将dataUrl转换为blob并通过ajax提交
- 带有前导散列字符的ajax提交的目的是什么
- Ruby On Rails Ajax 提交提交两次
- AJAX 表单不是 AJAX 提交
- Ajax 提交表单有时有效,有时直接重定向到操作网址
- 在使用 jQuery 验证插件进行验证后,使用 AJAX 提交表单
- 如何使用Jquery AJAX提交多个表单
- 使用ajax提交邮件表单的正确方法?-没有JQuery
- 如何使js成为通过ajax提交的rails表单的格式
- 在jquery停止事件时通过ajax提交表单
- 在AJAX提交之前使用jQuery进行多重下拉选择验证