如果不在jquery中再次刷新页面,错误/成功消息警报不会在第二次ajax调用中显示
这是如果不在jquery中再次刷新页面,错误/成功消息警报不会在第二次ajax调用中显示,jquery,json,ajax,Jquery,Json,Ajax,这是modal中Submit/Send按钮的click event,当我单击Send按钮时,如果email字段为空,则显示错误请输入有效的电子邮件.如果电子邮件字段不为空且电子邮件有效,则会显示成功消息,表明已向您的朋友发送了电子邮件。向该电子邮件发送电子邮件后,由于设置超时功能关闭模式,但当我再次打开该模式并单击发送按钮时,不会显示任何错误消息或成功即使发送了电子邮件,也要发送邮件。我必须刷新页面以使其再次工作。我的代码有什么问题 $('#send-book').on('click', fun
modal
中Submit/Send
按钮的click event
,当我单击Send按钮时,如果email字段为空,则显示错误请输入有效的电子邮件.
如果电子邮件字段不为空且电子邮件有效,则会显示成功消息,表明已向您的朋友发送了电子邮件。
向该电子邮件发送电子邮件后,由于设置超时功能关闭模式
,但当我再次打开该模式并单击发送按钮时,不会显示任何错误消息或成功即使发送了电子邮件,也要发送邮件。我必须刷新页面以使其再次工作。我的代码有什么问题
$('#send-book').on('click', function() {
$.ajax({
url: 'index.php?route=account/books/shareWithFriends',
type: 'post',
data: 'emails=' + $("#friends-emails").val() +'&booklink=' + $("#sharedBookUrl").val(),
dataType: 'json',
beforeSend: function() {
$('#send-book').button('loading');
},
success: function(json) {
var newDta = JSON.stringify(json);
var msg = '';
if (json['error']) {
msg = "<div class='alert alert-danger'>" +
"<strong>ERROR!</strong> " +
json['error'] +
"<button type='button' class='close' data-dismiss='alert'>×</button>" +
"</div>";
}
if (json['success']) {
msg = "<div class='alert alert-success'>" +
"<strong>Success!</strong> " +
json['success'] +
"<button type='button' class='close' data-dismiss='alert'>×</button>" +
"</div>";
}
$('#book-shared-message').html(msg);
setTimeout(function() {
$("#book-shared-message").hide();
$('#tellYourFriendModel').modal('hide');
}, 3000);
$('#friends-emails').val('');
$('#send-book').button('reset');
}
});
});
您的代码在
#book shared message
元素上调用.hide()
,但它从不调用.show()
来再次显示它。因此,当您使用.html(msg)
用新值填充它时,它仍然是不可见的。您可能应该在每次显示时调用.show()
类似地,您可以调用$('#tellYourFriendModel').modal('hide')代码>这似乎是为了隐藏模式覆盖,但不应该有某种相应的.modal('show')
调用吗?我不熟悉这个插件,所以不能告诉你细节,但它看起来确实可疑
顺便说一句,这是您可以通过在任何浏览器中使用开发人员工具中的DOM检查器自行解决的问题。如果您在第二次提交后检查了DOM元素,您会发现其中一些元素是隐藏的。我已经编辑了我的问题并添加了代码,其中.modal('show')被称为非常好的-但是我仍然没有看到您隐藏后的.show()
书籍共享消息
。让我在ajax中完成并进行测试,将在5分钟内让您知道太好了!我很高兴这有帮助。还有一个想法。。。我不知道您的元素是如何嵌套的,但如果#book shared message
是#tellYourFriendModel
的子元素,那么您可能根本不需要隐藏它,因为隐藏其父元素也会隐藏它。这将稍微简化代码。另外,只是拼写错误,您可能想命名modal divtellYourFriendModal
,而不是tellYourFriendModel
:-)收到。那我们就说。。。他们不是模型开发人员!;-)
/* code to handle show modal popup for tell your friend */
$('a[id^="tellYourFriend-"]').on('click', function(e) {
e.preventDefault();
var currentThis = $(this);
var book_url = currentThis.attr('data-book_url');
$('#sharedBookUrl').val(book_url);
//$('#book-shared-message').html('');
$('#tellYourFriendModel').modal('show');
});