如果不在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 div
tellYourFriendModal
,而不是
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');
    });