【问题标题】:ajax cannot clear my ul when error comes出现错误时,ajax 无法清除我的 ul
【发布时间】:2017-09-19 02:04:22
【问题描述】:

我有一个在 laravel 中使用 ajax 添加数据的代码。现在,当我尝试输入有效数据时,我的 ajax 将返回警报成功类,如果错误它会给我警报危险类并列出 <li> 中字段的所有错误现在我的问题是当我第一次输入正确的数据时,我的警报成功工作正常并给我一个成功的警报消息,现在当我复制我的数据时,它会返回错误并且我的<li> 列表没有被清空。我附加的成功消息没有被清除。

这是我的代码:

function addCategoryAjax(e) {
    e.preventDefault();
    $('.print-error-msg ul').empty();
    $.ajax({         
        url: "{{ route('admin.addcat') }}",        
        type: "POST",
        data: $("#frmAddcategory").serialize(),
        dataType: "JSON",
        success: function(data) {
             if($.isEmptyObject(data.error)){
                $('.print-error-msg').removeClass('alert alert-danger');
                $(".print-error-msg").addClass('alert alert-success');
                $(".print-error-msg").find("ul").html('');
                $(".print-error-msg").css('display','block');
                $(".print-error-msg").append('<li>'+data.success+'</li>');
                }else{
                printErrorMsg(data.error);
            }
        }
    }); 
}

function printErrorMsg (msg) {

            $('.print-error-msg').removeClass('alert alert-success');
            $(".print-error-msg").addClass('alert alert-danger');
            $(".print-error-msg").find("ul").html('');
            $(".print-error-msg").css('display','block');
            $.each( msg, function( key, value ) {
                $(".print-error-msg").find("ul").append('<li>'+value+'</li>');
            });
}

我上面的代码显示了来自li 的附加消息。为什么这个$('.print-error-msg ul').empty(); 不起作用。?有什么建议吗?

这是我的看法:

<div class="row">
   <div class="col-md-10 col-md-offset-1" style="margin-top: 6px;">
       <div class="print-error-msg" style="display:none">
           <ul></ul>
       </div>
   </div>
</div>

【问题讨论】:

  • 您尝试删除style="display:none" 看看是否有效?
  • 您在 addCategoryAjax() 中调用了一次 empty() 方法,但何时再次调用 addCategoryAjax()?
  • 在 ajax 调用 $('.print-error-msg ul').empty(); 之前你已经这样做了,所以必须清楚你的 ul 。当你成功时,问题可能就在这里,你像这样附加$(".print-error-msg").append('&lt;li&gt;'+data.success+'&lt;/li&gt;');应该附加在ul
  • 你试过$('.print-error-msg ul li').remove();吗?
  • @DavidJorHpan 我把它放在首位,因为该 ajax 来自按钮提交。每次单击按钮时,我都想从 .print-error-msg div 中清除
  • 的 ul 元素

标签: javascript jquery html css ajax


【解决方案1】:

使用正确的数据,将li 附加到.print-error-msg,而不是ul

$(".print-error-msg").append('<li>'+data.success+'</li>');

因此,当获取错误数据时,清空ul 将不起作用,您的代码:

$(".print-error-msg").find("ul").html('');

改为将附加li修改为$(".print-error-msg ul")

$(".print-error-msg ul").append('<li>'+data.success+'</li>');

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签