【问题标题】:How to show message or data only one time while select multiple checkbox in jquery?如何在jquery中选择多个复选框时只显示一次消息或数据?
【发布时间】:2018-10-01 08:05:32
【问题描述】:

代码:

<script>
    $(document).ready(function(){
        $(".choose").click(function(){
            job_type = $(':checked').map(function() { 
                            return this.value; 
                        }).get().join(',');
            category = $("#cat_gory").val();
            $.ajax({
                type:"POST",
                data:{"job_type":job_type,"category":category},
                url:"type-jobs.php",
                success:function(data){
                    $(".success").html(data);
                }
            });
        });
    });
</script>
    <input type="hidden" name="cat_gory" id="cat_gory" value="<?php echo $job_category; ?>" />  
<p class="flchek">
    <input type="checkbox" name="choosetype" value="freelance" class="choose" id="33r">
    <label for="33r">Freelance</label>
</p>
<p class="ftchek">
    <input type="checkbox" name="choosetype" value="full time" class="choose" id="dsf">
    <label for="dsf">Full Time</label>
</p>
<p class="ischek">
    <input type="checkbox" name="choosetype" value="internship" class="choose" id="sdd">
    <label for="sdd">Internship</label>
</p>
<div class="success"></div>

type-jobs.php

<?php
    include("config.php");
    $job_category = mysqli_real_escape_string($con,$_POST['category']);
    $job_type = mysqli_real_escape_string($con,$_POST['job_type']);
    $tag = explode(",",$job_type);
    foreach($tag as $type)
    {
        $sql_job = mysqli_query($con,"select p.job_title,c.state,c.city from company c inner join jobs p on p.company_name = c.company_name where p.category = '".$job_category."' and job_type='".$type."'");

        $result_job = mysqli_num_rows($sql_job);
        if($result_job > 0)
        {
            while($row_jobs = mysqli_fetch_array($sql_job))
            {
                echo '<h3>'.$row_jobs['job_title'].'</h3>';
            }
        }
        else
        {
            echo '<p id="c_mm">record not found</p>';
        }
    }
?>

在这段代码中,我有多个复选框。现在,当我单击复选框以通过 jquery/ajax 获取数据时,它会将数据返回给我,但问题是如果我单击 freelance 复选框,它会在我单击 full time 时再次显示 record not found 然后它显示 @987654326 @ 以及 jobs。现在,我想如果在我的数据库中找不到数据,它将向我显示一条消息,如果找到数据,则隐藏消息并显示数据库记录。那么,我该怎么做呢?请帮帮我。

谢谢

【问题讨论】:

  • 如果对数据库的调用不重,在服务器上生成 HTML 并显示/隐藏相关的 div。那么就不需要ajax了
  • category = $("#cat_gory").val(); 我没有看到 id="cat_gory"
  • 查看我的编辑代码@Cid
  • 如果我理解得很好,隐藏输入中的 id 为 cat_gory 的值是使用 php 变量 $job_category 设置的,而 php 变量 $job_category 的值来自该隐藏输入。那里可能有废话

标签: php jquery ajax mysqli


【解决方案1】:

不用爆$jobtype使用'jobtype IN('.$jobtype.') '

    <?php
    include("config.php");
    $job_category = mysqli_real_escape_string($con,$_POST['category']);
    $job_type = mysqli_real_escape_string($con,$_POST['job_type']);

    $sql_job = mysqli_query($con,"select p.job_title,c.state,c.city from company c inner join jobs p on p.company_name = c.company_name where p.category = '".$job_category."' and job_type IN('".$jobtype."') ');

       $count = mysqli_num_rows($sql_job);
        $row_data = mysqli_fetch_array($chek_result);
    if($count > 0){
        foreach($row_data as $data){
           $message = '<h3>'.$data['job_title'].'</h3>';
        }
    }else{
       $message = "No Data found";
    }
echo $message;exit;
?>

【讨论】:

    【解决方案2】:

    如果您只想在没有找到任何记录的情况下显示record not found 消息,那么您可以在 php 中使用类似这样的标志:

    <?php
    include("config.php");
    $job_category = mysqli_real_escape_string($con,$_POST['category']);
    $job_type = mysqli_real_escape_string($con,$_POST['job_type']);
    $found = 0;
    $message = '';
    $tag = explode(",",$job_type);
    foreach($tag as $type)
    {
        $sql_job = mysqli_query($con,"select p.job_title,c.state,c.city from company c inner join jobs p on p.company_name = c.company_name where p.category = '".$job_category."' and job_type='".$type."'");
    
        $result_job = mysqli_num_rows($sql_job);
        if($result_job > 0)
        {
            $found = 1;
            while($row_jobs = mysqli_fetch_array($sql_job))
            {
                $message .= '<h3>'.$row_jobs['job_title'].'</h3>';
            }
        }
    }
    
    if(found == 0) {
        $message = '<p id="c_mm">record not found</p>';
    }
    echo message;
    ?>
    

    注意$found 代码中的标志。 HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多