weixin_33720078
weixin_33720078
采纳率0%
2017-11-05 19:51

没有数据信息显示

this code,i have done searching through enroll number. All code are correct and running properly but when match data are not found. No message shown .so, i want to show a message when match data are not found like that "No Such Data Found". How can i do this? please help to solve that problem, My code is below.

index.php

    <!DOCTYPE html>
<html>
 <head>
  <title>How to return JSON Data from PHP Script using Ajax Jquery</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <style>
  #result {
   position: absolute;
   width: 100%;
   max-width:870px;
   cursor: pointer;
   overflow-y: auto;
   max-height: 400px;
   box-sizing: border-box;
   z-index: 1001;
  }
  .link-class:hover{
   background-color:#f1f1f1;
  }
  </style>
 </head>
 <body>
  <br /><br />
  <div class="container" style="width:900px;">
   <h2 align="center">How to return JSON Data from PHP Script using Ajax Jquery</h2>
   <h3 align="center">Search Employee Data</h3><br />   
   <div class="row">
    <div class="col-md-4">
     <input type="text" name="employee_list" id="employee_list" class="form-control">

    </div>
    <div class="col-md-4">
     <button type="button" name="search" id="search" class="btn btn-info">Search</button>
    </div>
   </div>
   <br />
   <div class="table-responsive" id="employee_details" style="display:none">
   <table class="table table-bordered">
    <tr>
     <td width="10%" align="right"><b>Name</b></td>
     <td width="90%"><span id="name"></span></td>
    </tr>
    <tr>
     <td width="10%" align="right"><b>Address</b></td>
     <td width="90%"><span id="address"></span></td>
    </tr>

    <tr>
     <td width="10%" align="right"><b>Gender</b></td>
     <td width="90%"><span id="total_marks"></span></td>
    </tr>
    <tr>
     <td width="10%" align="right"><b>Designation</b></td>
     <td width="90%"><span id="email"></span></td>
    </tr>
    <tr>
     <td width="10%" align="right"><b>Age</b></td>
     <td width="90%"><span id="ph"></span></td>
    </tr>
   </table>
   </div>

  </div>
 </body>
</html>

<script>
$(document).ready(function(){
 $('#search').click(function(){
  var enroll= $('#employee_list').val();
  if(enroll != '')
  {
   $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{enroll:enroll},
    dataType:"JSON",
    success:function(data)
    {
    if(data.length != 0){

     $('#employee_details').css("display", "block");
     $('#name').text(data.name);
     $('#address').text(data.address);
     $('#total_marks').text(data.total_marks);
     $('#ph').text(data.ph);
     $('#email').text(data.email);
    }
    else { alert("Please Select Employee"); }
   }

   })
  }

  else
  {
   alert("Please Select Employee");
   $('#employee_details').css("display", "none");
  }
 });
});
</script>

fetch.php

  <?php
//fetch.php
if(isset($_POST["enroll"]))
{
 $connect = mysqli_connect("localhost", "root", "", "aviation");
 $query = "SELECT * FROM student WHERE enroll = '".$_POST["enroll"]."'";
 $result = mysqli_query($connect, $query);
 if(mysqli_num_rows($result)>0)
 {
 while($row = mysqli_fetch_array($result))
 {
  $data["name"] = $row["name"];
  $data["address"] = $row["address"];
  $data["total_marks"] = $row["total_marks"];
  $data["email"] = $row["email"];
  $data["ph"] = $row["ph"];

 }

 echo json_encode($data);
}
}
?>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • weixin_33670713 weixin_33670713 4年前

    In your PHP code, you seam to use a loop to fetch database rows. But your PHP Code acts like you only receive 1 row on data.

    Ill consider for the moment that you only will get 1 row of data unless you specify otherwise.

    You already check if mysql returns 1 or more results. So, all we need is a variable that tells you if a results has been found.

    Example:

    <?php
    $output = array(
        'result' => 0
    );
    
    if (isset($_POST["enroll"])) {
        $connect = mysqli_connect("localhost", "root", "", "aviation");
        $query = "SELECT name,address,total_marks,email,ph FROM student WHERE enroll = '" . $_POST["enroll"] . "'";
        $result = mysqli_query($connect, $query);
        if (mysql_num_rows($result) == 1) {
            $output['row'] = mysqli_fetch_array($result);
            $output['result'] = 1;
        }
    }
    
    echo json_encode($output);
    

    Then, if your javascript code, you only have to test if the data.result is equal to 1 or 0 and act accordingly. Example:

    <script>
        $(document).ready(function () {
            $('#search').click(function () {
                var enroll = $('#employee_list').val();
                if (enroll != '')
                {
                    $.ajax({
                        url: "fetch.php",
                        method: "POST",
                        data: {enroll: enroll},
                        dataType: "JSON",
                        success: function (data)
                        {
                            if(data.result == 1){
                                $('#employee_details').css("display", "block");
                                $('#name').text(data.row.name);
                                $('#address').text(data.row.address);
                                $('#total_marks').text(data.row.total_marks);
                                $('#ph').text(data.row.ph);
                                $('#email').text(data.row.email);
                            }
                            else{
                                alert("No Such Data Found");
                            }
                        }
                    })
                } else
                {
                    alert("Please Select Employee");
                    $('#employee_details').css("display", "none");
                }
            });
        });
    </script>
    

    Edit: be carefull, you should also sanitise the POST variable before using it in your mysql query

    点赞 评论 复制链接分享
  • csdnceshi72 谁还没个明天 4年前

    you could just add

     error: function(){
      alert('No Such Data Found!');
    }
    

    after the success:function(data)

    so your ajax call would be like :

      $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{enroll:enroll},
    dataType:"JSON",
    success:function(data)
    {
    if ($.trim(data)){  
     $('#employee_details').css("display", "block");
     $('#name').text(data.name);
     $('#address').text(data.address);
     $('#total_marks').text(data.total_marks);
     $('#ph').text(data.ph);
     $('#email').text(data.email);}
     else{alert('No Such Data Found!')}
    },
     error: function(){
      alert('error !');
    }
    

    or add an else in your php code that return a false if result is empty :

      if(mysql_num_rows($result)>0)
     {
    while($row = mysqli_fetch_array($result))
     {
     //code ......
    }
    
    echo json_encode($data);
    
    }else {
     return false;
     }
    

    then your ajax call would be like :

      $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{enroll:enroll},
    dataType:"JSON",
    success:function(data)
    {
     if(data != false){ 
    $('#employee_details').css("display", "block");
    $('#name').text(data.name);
    $('#address').text(data.address);
    $('#total_marks').text(data.total_marks);
    $('#ph').text(data.ph);
    $('#email').text(data.email);}else{alert('No Such Data Found!');}
    }
    
    点赞 评论 复制链接分享