【问题标题】:Multiple checkbox filters return server error 500多个复选框过滤器返回服务器错误 500
【发布时间】:2016-02-21 15:48:07
【问题描述】:

我正在尝试设置一个带有多个复选框过滤选项的 Wordpress 投资组合页面。 js 代码和一些 HTML 来自 MixItUp (http://codepen.io/patrickkunka/pen/iwcap)。

<div class="row">
    <!-- Filter categories -->
    <div class="col-md-4">      
        <form class="controls" id="Filters">
            <?php
            $count1 = 0;
            // all products of category with sortable
            function enc8($c){  return utf8_encode($c); }
            $terms1 = get_terms( product_group );
            $count1 = count($terms1);
            echo '<fieldset>';
                if ( $count1 > 0 ){
                        foreach ( $terms1 as $term1 ) {
                            $termname1 = strtolower($term1->name);
                            $termname1 = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$termname1);
                            echo '<div class="checkbox"><input type="checkbox" value=".'.$termname1.'"/><label> '.$term1->name.'</label></div>';
                        }
                }
            echo '</fieldset>';
            ?>
            <a class="btn btn-small btn-default" id="Reset">Reset</a>
        </form>
    </div>
    <div class="col-md-4">      
        <form class="controls" id="Filters">
            <?php
            $count2 = 0;    
            // all products of category with sortable
            function enc8($c){  return utf8_encode($c); }
            $terms2 = get_terms( product_category );
            $count2 = count($terms2);
            echo '<fieldset>';
                if ( $count2 > 0 ){
                        foreach ( $terms2 as $term2 ) {
                            $termname2 = strtolower($term2->name);
                            $termname2 = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$termname2);
                            echo '<div class="checkbox"><input type="checkbox" value=".'.$termname2.'"/><label> '.$term2->name.'</label></div>';
                        }
                }
            echo '</fieldset>';
            ?>
            <a class="btn btn-small btn-default" id="Reset">Reset</a>
        </form>
    </div>

第一个分类过滤器 (product_group) 工作正常。但是,当我添加第二个(product_category)时,页面部分崩溃,Chrome 返回以下错误消息:加载资源失败:服务器响应状态为 500(内部服务器错误)。

HTML 输出如下所示:

<div class="col-md-4">      
    <form class="controls" id="Filters">
        <fieldset>
            <div class="checkbox">
                <input type="checkbox" value=".class01"><label> Class01</label>
            </div>
            <div class="checkbox">
                <input type="checkbox" value=".class02"><label> Class02</label>
            </div>
            <div class="checkbox">
                <input type="checkbox" value=".class03"><label> Class03</label>
            </div>
        </fieldset>
        <a class="btn btn-small btn-default" id="Reset">Reset</a>
    </form>
</div>
<div class="col-md-4">      
    <form class="controls" id="Filters">
    <!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

    Page Caching using disk: enhanced (User is logged in)

    Served from: mydomain.org @ 2016-02-21 17:03:37 by W3 Total Cache -->
    </form>
</div>

有人知道问题出在哪里吗?

【问题讨论】:

  • 有多少个复选框?这不太可能,但您是否有机会提交超过 1k 项?向服务器提交了哪些值?
  • 第一个过滤器目前有六个复选框(我将样本的输出减少到三个)。未来每个人都不太可能超过 20 个。

标签: javascript jquery html wordpress mixitup


【解决方案1】:

最后,我想通了。问题是下面的函数

function enc8($c){ return utf8_encode($c); }

在代码中出现了两次。将两个过滤器组合成一个函数并稍微重命名一些变量是解决方案:

<form class="controls" id="Filters">
    <?php
    $countgroups = 0;
    $countcats = 0;

    function enc8($c){ return utf8_encode($c); }

    $groups = get_terms( product_group );
    $countgroups = count($groups);                          
    $cats = get_terms( product_category );
    $countcats = count($cats);

    echo '<fieldset class="groups"><h4>Produktgruppen</h4>';
        if ( $countgroups > 0 ){
                foreach ( $groups as $group ) {
                    $groupname = strtolower($group->name);
                    $groupname = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$groupname);
                    echo '<div class="checkbox"><input type="checkbox" value=".'.$groupname.'"/><label>'.$group->name.'</label></div>';
                }
        }
    echo '</fieldset>';
    echo '<fieldset class="cats"><h4>Produktkategorien</h4>';
        if ( $countcats > 0 ){
                foreach ( $cats as $cat ) {
                    $catname = strtolower($cat->name);
                    $catname = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$catname);
                    echo '<div class="checkbox"><input type="checkbox" value=".'.$catname.'"/><label>'.$cat->name.'</label></div>';
                }
        }
    echo '</fieldset>';
    ?>
    <a class="btn btn-small btn-default" id="Reset">Reset</a>
</form>

现在像魅力一样工作:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多