首页 > 解决方案 > 将变量发送到 $_POST 而不进行实时搜索

问题描述

我已经修改了一个有效的实时搜索脚本以包含一个组合框。我希望实时搜索框正常工作。当进行选择以将选择以变量的形式传递给 livecompsearch.php 脚本时,我需要组合框。我不希望组合框搜索任何内容,以便能够在需要时使用变量,例如使用 $_POST['query2']。我已经从 php 脚本中省略了很多代码,因为这里并不真正需要它,我现在只想输出变量。我计划使用下拉菜单作为选项来搜索表中的不同列,方法是先选择其中一个选项,然后开始在实时搜索框中输入他们要查找的内容。

Testp.php

    <div class="line">
        <div class="box margin-bottom">
            <div class="margin">
                <div class="s-12 m-6 l-12">
                <input type="text" name="search_box" id="search_box" class="searchbox" placeholder="Enter your live search here..." />
                <select name="Search_Option" id="Search_Option" class="searchbox" style="width: auto;">
                <?php
                    $options = array(
                    '0'=> 'All',
                    '1'=> 'Played',
                    '2'=> 'Scheduled',
                    '3'=> 'Cancelled'
                    );
                    $selected = 'Select';
                        foreach($options as $option=> $title){
                            if($selected==$option){
                                echo '<option value="'.htmlspecialchars($option).'" selected="selected">'.ucfirst($title).'</option>';
                            }else{
                                echo '<option value="'.htmlspecialchars($option).'">'.ucfirst($title).'</option>';
                            }
                        }
                ?>
                </select>
                </div>
            </div>
        </div>
    </div>

<script>
  $(document).ready(function(){

    load_data(0);
    load_data(1);
    
    function load_data(page, query = '', query2 = '0')
    {
      $.ajax({
        url:"includes/livecompsearch.php",
        method:"POST",
        data:{page:page, query:query, query2:query2},
        success:function(data)
        {
          $('#dynamic_content').html(data);
        }
      });
    }

    $(document).on('click', '.page-link', function(){
      var page = $(this).data('page_number');
      var query = $('#search_box').val();
      load_data(page, query);
    });

    $('#search_box').keyup(function(){
      var query = $('#search_box').val();
      load_data(1, query);
    });

    $('#Search_Option').change(function(){
      var query2 = $('#Search_Option').val();
      load_data(0, 1, query2);
    });

  });
</script>   

livecompsearch.php

<?php

echo '  <p><strong>Variable: </strong>['.$_POST['query2'].']</p>'; 

?>

标签: javascriptphpjqueryajax

解决方案


嘿,所以我可能误解了你的问题,但我认为你可以只使用 if 语句,这样如果你只更改 HTML,如果你从 PHP 获得特定结果。

或者更好的是,如果您更改组合框,则不要让它触发。

var query = $('#search_box').val()andvar query2 = $('#Search_Option').val();放在load_data函数之前,$.ajax({然后以这种方式发送。

显然摆脱query参数,然后将函数调用放入事件处理程序中。

如果您将其全部保存在一个函数中,那么当它被触发时,它将发送当时输入的值,我认为这就是您想要的。


推荐阅读