如何修复 htmlspecialchars() 期望参数 1 是字符串,给定数组

Posted

技术标签:

【中文标题】如何修复 htmlspecialchars() 期望参数 1 是字符串,给定数组【英文标题】:How to fix htmlspecialchars() expects parameter 1 to be string, array given 【发布时间】:2021-11-13 12:02:07 【问题描述】:

我在https://bootsnipp.com/snippets/BE93p 中关注这个 bootsnip 代码 在 bootstrab 中创建动态表格,它在点击添加行按钮后插入一个新字段,并在填充输入后动态计算总价格。

但我在插入新行后出现此错误?!

htmlspecialchars() expects parameter 1 to be string, array given (View: C:\xampp\htdocs\laundry\vendor\blade-ui-kit\blade-ui-kit\resources\views\components\forms\inputs\input.blade.php)

刀片页面:

<div class="container">
    <div class="row clearfix">
        <div class="col-md-12">
            <table class="table table-bordered table-hover" id="tab_logic">
                <thead>
                <tr>
                    <th class="text-center"> # </th>
                    <th class="text-center"> Product </th>
                    <th class="text-center"> Qty </th>
                    <th class="text-center"> Price </th>
                    <th class="text-center"> Total </th>
                </tr>
                </thead>
                <tbody>
                <tr id='addr0'>
                    <td>1</td>
                    <td><input type="text" name='product[]'  placeholder='Enter Product Name' class="form-control"/></td>
                    <td><input type="number" name='qty[]' placeholder='Enter Qty' class="form-control qty" step="0" min="0"/></td>
                    <td><input type="number" name='price[]' placeholder='Enter Unit Price' class="form-control price" step="0.00" min="0"/></td>
                    <td><input type="number" name='total[]' placeholder='0.00' class="form-control total" readonly/></td>
                </tr>
                <tr id='addr1'></tr>
                </tbody>
            </table>
        </div>
    </div>
    <div class="row clearfix">
        <div class="col-md-12">
            <button id="add_row" class="btn btn-default pull-left">Add Row</button>
            <button id='delete_row' class="pull-right btn btn-default">Delete Row</button>
        </div>
    </div>
    <div class="row clearfix" style="margin-top:20px">
        <div class="pull-right col-md-4">
            <table class="table table-bordered table-hover" id="tab_logic_total">
                <tbody>
                <tr>
                    <th class="text-center">Sub Total</th>
                    <td class="text-center"><input type="number" name='sub_total' placeholder='0.00' class="form-control" id="sub_total" readonly/></td>
                </tr>
                <tr>
                    <th class="text-center">Tax</th>
                    <td class="text-center"><div class="input-group mb-2 mb-sm-0">
                            <input type="number" class="form-control" id="tax" placeholder="0">
                            <div class="input-group-addon">%</div>
                        </div></td>
                </tr>
                <tr>
                    <th class="text-center">Tax Amount</th>
                    <td class="text-center"><input type="number" name='tax_amount' id="tax_amount" placeholder='0.00' class="form-control" readonly/></td>
                </tr>
                <tr>
                    <th class="text-center">Grand Total</th>
                    <td class="text-center"><input type="number" name='total_amount' id="total_amount" placeholder='0.00' class="form-control" readonly/></td>
                </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

<script>
    $(document).ready(function()
        var i=1;
        $("#add_row").click(function()b=i-1;
            $('#addr'+i).html($('#addr'+b).html()).find('td:first-child').html(i+1);
            $('#tab_logic').append('<tr id="addr'+(i+1)+'"></tr>');
            i++;
        );
        $("#delete_row").click(function()
            if(i>1)
                $("#addr"+(i-1)).html('');
                i--;
            
            calc();
        );

        $('#tab_logic tbody').on('keyup change',function()
            calc();
        );
        $('#tax').on('keyup change',function()
            calc_total();
        );


    );

    function calc()
    
        $('#tab_logic tbody tr').each(function(i, element) 
            var html = $(this).html();
            if(html!='')
            
                var qty = $(this).find('.qty').val();
                var price = $(this).find('.price').val();
                $(this).find('.total').val(qty*price);

                calc_total();
            
        );
    

    function calc_total()
    
        total=0;
        $('.total').each(function() 
            total += parseInt($(this).val());
        );
        $('#sub_total').val(total.toFixed(2));
        tax_sum=total/100*$('#tax').val();
        $('#tax_amount').val(tax_sum.toFixed(2));
        $('#total_amount').val((tax_sum+total).toFixed(2));
    

请帮我解决这个错误

【问题讨论】:

【参考方案1】:

通过添加 type="button" 解决了这个问题 在按钮标签中

  <button type="button" id="add_row" class="btn btn-default pull-left">Add Row</button>
            <button type="button" id='delete_row' class="pull-right btn btn-default">Delete Row</button>

【讨论】:

以上是关于如何修复 htmlspecialchars() 期望参数 1 是字符串,给定数组的主要内容,如果未能解决你的问题,请参考以下文章

htmlspecialchars() - 如何以及何时使用和避免多次使用

呈现集合抛出“htmlspecialchars() 期望”我如何像 Eloquent 集合一样重新编辑它 [关闭]

修复XSS跨站漏洞

图像修复基于matlab深度信息图像修复含Matlab源码 2299期

图像修复基于matlab深度信息图像修复含Matlab源码 2299期

图像修复基于matlab GUI FMM+Criminisi算法彩色图像修复含Matlab源码 1507期