jquery - 使用 AJAX 错误停止表单重定向
问题描述
试图让它在用户输入他们的电子邮件并点击“确定”按钮时不会重定向我的表单。
我似乎让 AJAX 代码本身在显示错误消息时工作,但我的问题是它每次都会出错,并且会显示错误消息 3 次。
这是代码片段
<script type="text/javascript">
$(function () {
$(document).scroll(function () {
var $nav = $(".navbar-fixed-top");
$nav.toggleClass('scrolled', $(this).scrollTop() > $nav.height());
});
$('.count').each(function () {
$(this).prop('Counter', 0).animate({
Counter: $(this).text()
}, {
duration: 7000,
easing: 'swing',
step: function (now) {
$(this).text(Math.ceil(now));
}
});
$(document).ready(function () {
var $form = $('.newsletter');
if ($form.length > 0) {
$('form input[type="submit"]').bind('click', function (event) {
if (event) event.preventDefault();
register($form);
});
}
});
function register($form) {
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: $form.serialize(),
cache: false,
dataType: 'json',
contentType: "application/json; charset=utf-8",
error: function (err) {
alert(
"Could not connect to the registration server. Please try again later."
);
},
success: function (data) {
if (data.result != "success") {
// Something went wrong, do something to notify the user. maybe alert(data.msg);
} else {
// It worked, carry on...
}
}
});
}
$(document).ready(function () {
$('.customer-logos').slick({
slidesToShow: 4,
slidesToScroll: 1,
autoplay: true,
autoplaySpeed: 1500,
arrows: false,
dots: false,
pauseOnHover: false,
responsive: [{
breakpoint: 768,
settings: {
slidesToShow: 4
}
}, {
breakpoint: 520,
settings: {
slidesToShow: 3
}
}]
});
});
});
})
</script>
</head>
<body>
<div class="top-bg" style="position:relative;">
<p class="text-uppercase-1" data-aos="fade-down" data-aos-duration="900" data-aos-delay="100" data-aos-once="true"
data-aos-easing="ease-in-out" id="top-banner-text-1" style="font-family:Karla, sans-serif;">AIRBNB CARES</p>
<form class="newsletter" action="https://airbnbcares.us19.list-manage.com/subscribe/post" method="POST"
autocomplete="off">
<input type="hidden" name="u" value="88baf6d86f9a8faebb5c5ec99">
<input type="hidden" name="id" value="774141a683">
<input type="email" name="MERGE0" id="MERGE0" placeholder="Enter your email address to subscribe!" tabindex="1"
class="newsletter-email" required>
<input type="submit" class="newsletter-submit" name="submit" value="OK">
</form>
</div>
如果有人能对此有所了解,将不胜感激!
解决方案
您可以将盲按钮“单击”更改为“提交”
$('form').bind('submit', function (event) {
if (event) event.preventDefault();
register($form);
});
或将输入类型“提交”更改为“按钮”(但您的表单不会发送数据名称“提交”)
<input type="button" class="newsletter-submit" name="submit" value="OK">
推荐阅读
- codeigniter - Codeigniter 购物车更新
- asp.net-mvc - 无法将数据填充到 jqGrid 控件中,但没有错误
- android - WebView:状态码 404,即使页面在浏览器中加载正常
- android - 应用启动时看不到 CardView Elevation
- java - 未能在 30000 超时内关闭 1 个相位值为 2147483647 的 bean:[org.springframework.jms.config.internalJmsListenerEndpointRegistry]
- wpf - 如何将 StackPanel 的高度绑定到 WPF 中包含的 Grid 的高度?
- sql - 如何按顺序添加两列(而不是连接)?
- r - 基于 Excel 的 CSV 和 R 的 as.Date() 函数中的数据输入导致问题
- laravel - laravel auth 添加管理员
- assembly - 汇编语言 ASCII 字符串排序