首页 > 解决方案 > 如何使用 jquery 在 AJAX 中调用警报?

问题描述

我是网络开发的新手。关于在我的 AJAX 中调用警报,我已经陷入这个问题很长一段时间了。如果在我的数据库中找不到任何记录,我要做的就是向用户显示警报。我的代码如下:

Javascript:

function get_types() {

    let $select = $("#colony_type");

    $.ajax({
      url: 'server.php',
      type: 'POST',
      data: { "input": "types",
              "name": $("#colony_name").val() }, 
      dataType: 'json',

      success: function(response) {
        let selectedValue = $select.val();
        let html = response.filter((e, i, a) => a.indexOf(e) === i).map(item => `<option value="${item}">${item}</option>`);
        $select.html(html).val(selectedValue);
      },

      complete: function() {}
    });
}

PHP:

<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS');

    $server="localhost";
    $username="root";
    $pass="";

    $con=mysqli_connect($server,$username,$pass);
    $connection=mysqli_select_db($con,"electric billing system");

    if($_POST["input"] == "types"){

            if(!$connection)
                    echo "Connection to database failed! Please try again";
            else{
                    $codes=array();
                    $sql = "SELECT * from colony_master WHERE Colony_name='".$_POST["name"]."'";
                    $result = $con->query($sql);
                    if ($result->num_rows > 0) {
                            while($row = $result->fetch_assoc()) {
                                $code=$row["Colony_code"];
                            }
                            $sql = "SELECT * from quarter_master_entry WHERE Colony_code='".$code."'";
                            $result = $con->query($sql);
                            if ($result->num_rows > 0) {
                                while($row = $result->fetch_assoc()) {
                                    array_push($codes,$row["Qtr_type"]);
                                }
                                echo json_encode($codes);
                            }
                            else
                               echo "No colony type information found"; //I want to show this message as alert if no records are found
                            
                    }
                   
            }
        }

        $con->close();
 ?>

HTML:

<p id="cln_type"><b>Type</b> :<br><select name="colony_type" id="colony_type" onclick="get_types()">
                <option value="default" selected="selected_type">Select your colony type</option>
</select></p>

如果我从服务器收到一个空数组,那么它应该显示一个警报。我怎么做?请帮我。


编辑:我尝试在我else的 php 语句中使用此代码显示警报消息,但仍然不起作用:

$message = "No colony type information found";
echo "<script type='text/javascript'>alert('$message');</script>";

标签: javascriptphpjquery

解决方案


修复服务器端响应,以便它使用 jsonified 数组回答

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    array_push($codes,$row["Qtr_type"]);
  }
  //echo json_encode($codes);
}else{
  $error=array();
  $error['error'] = "No colony type information found";
  array_push($codes,$error);
}
echo json_encode($codes);

然后在 ajax 中success

success: function(response) {
  let selectedValue = $select.val();
  
  response = JSON.parse(response); // Possibly useless... Just as a note. 

  if(response.error){
    alert(response.error)
    return
  }
  
  let html = response.filter((e, i, a) => a.indexOf(e) === i).map(item => `<option value="${item}">${item}</option>`);
  $select.html(html).val(selectedValue);
},

未经测试......但你应该明白这一点。;)


推荐阅读