首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Wordpress中使用PHP和JQuery实现多输入的Ajax搜索表单| Data Fetch

在Wordpress中使用PHP和JQuery实现多输入的Ajax搜索表单| Data Fetch
EN

Stack Overflow用户
提问于 2021-04-29 11:45:09
回答 1查看 61关注 0票数 1

我的代码运行得很好,但我需要在其中添加2个下拉列表:

这是我输入值的地方:

代码语言:javascript
运行
复制
<form>
<input type="text" name="keyword" id="keyword" onkeyup="fetch()" placeholder="Search..">    
</form>

我希望它看起来像这样:

代码语言:javascript
运行
复制
 <form>
    <input type="text" name="keyword" id="keyword" onkeyup="fetch()" placeholder="Search..">   
    <select>
       <option>location category</option>
       <option>option2</option>
    </select>
     <select>
       <option>category</option>
       <option>option2</option>
    </select>
  </form>

我将这段代码放在functions.php中,它运行良好

代码语言:javascript
运行
复制
<script type="text/javascript">
    
function fetch(){
    jQuery.ajax({
        url: '<?php echo admin_url('admin-ajax.php'); ?>',
        type: 'post',
        data:{ action: 'data_fetch', keyword: jQuery('#keyword').val() },
        success: function(data) {
            jQuery('#datafetch').html( data );
        }
    });

}
</script>

<?php
}

// the ajax function
add_action('wp_ajax_data_fetch' , 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch','data_fetch');
function data_fetch(){

    $the_query = new WP_Query( 
      array( 
        'posts_per_page' => -1, 
        's' => esc_attr( $_POST['keyword'] ), 
        'post_type' => 'locations' 
      ) 
    );

    if( $the_query->have_posts() ) :
        while( $the_query->have_posts() ): $the_query->the_post();

$myquery = esc_attr( $_POST['keyword'] );
$a = $myquery;
$search = get_the_title();
if( stripos("/{$search}/", $a) !== false) {?>
             
        <div class="city-results">
            <a href="<?php the_permalink();?>">
                <h3>
                <?php the_title();?>
                </h3>
            </a>
            
        </div>

        <?php }
    endwhile;
        wp_reset_postdata();  
    endif;

    die();
}
?>

我想我们需要编辑这个获取数据的区域

代码语言:javascript
运行
复制
data:{ action: 'data_fetch', keyword: jQuery('#keyword').val() },

我试着使用这种方法,但不起作用:

代码语言:javascript
运行
复制
data:{ action: 'data_fetch', keyword: jQuery('#keyword , #keyword2').val() },

但我是Jquery/Ajax的新手

如果有人能帮我这个忙,提前谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-04-29 14:02:12

您需要将两个下拉值都传递给ajax数据参数。检查下面的代码。

代码语言:javascript
运行
复制
<form>
    <input type="text" name="keyword" id="keyword" onkeyup="fetch()" placeholder="Search..">   
    <select name="location" id="location">
       <option>location category</option>
       <option>option2</option>
    </select>
     <select name="category" id="category">
       <option>category</option>
       <option>option2</option>
    </select>
</form>

<script type="text/javascript">

    function fetch(){
        jQuery.ajax({
            url: '<?php echo admin_url('admin-ajax.php'); ?>',
            type: 'post',
            data:{ 
                action: 'data_fetch', 
                keyword: jQuery('#keyword').val(),
                location: jQuery('#location').val(),
                category: jQuery('#category').val()
            },
            success: function(data) {
                jQuery('#datafetch').html( data );
            }
        });

    }
</script>

// the ajax function
add_action('wp_ajax_data_fetch' , 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch','data_fetch');
function data_fetch(){

    echo $_POST['location']." ".$_POST['category'];

    $the_query = new WP_Query( 
      array( 
        'posts_per_page' => -1, 
        's' => esc_attr( $_POST['keyword'] ), 
        'post_type' => 'locations' 
      ) 
    );

    if( $the_query->have_posts() ) :
        while( $the_query->have_posts() ): $the_query->the_post();

        $myquery = esc_attr( $_POST['keyword'] );
        $a = $myquery;
        $search = get_the_title();
        if( stripos("/{$search}/", $a) !== false) {?>
                     
                <div class="city-results">
                    <a href="<?php the_permalink();?>">
                        <h3>
                        <?php the_title();?>
                        </h3>
                    </a>
                    
                </div>

        <?php }
    endwhile;
        wp_reset_postdata();  
    endif;

    die();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67310759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档