Как очистить текстовые поля и отправить предупреждение с помощью Ajax, если данные не могут быть найдены в таблице MySQL? - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь очистить текстовые поля и отправить предупреждающее сообщение, когда данные не могут быть найдены в таблице MySQL.Есть ли способ сделать это, даже если я использую тип: «JSON»?Потому что, когда я пытался удалить json, предупреждающее сообщение работает, проблема в том, что если я это сделаю, он не показывает данные в таблице MySQL.Заранее благодарю за помощь.

$(function() {
  $('#search').click(function() {
    var inp = $('#username');
    if (inp.val().length > 0) {
      var src_uname = $('#username').val();

      $.ajax({
        url: "./search_process.php",
        type: "POST",
        dataType: "json",
        data: {
          username: src_uname
        },

        success: function(data) {
  
          var fullname = data[0]['fullname'];
          var address = data[0]['address'];

          document.getElementById('fullname').value = fullname;
          document.getElementById('address').value = address;

        }
      });
    } else {
      alert("Enter username in the textbox!");
    }
  });
});
<form id="form_data" style="width:40%;margin:1em auto;">
  <div class="form-group">
    <input type="text" id="username" name="username" class="form-control" placeholder="Enter Username" />
    <input type="button" id="search" class="btn btn-success" value="Search" />
  </div>

  <div class="form-group">
    <input type="text" id="fullname" name="fullname" class="form-control" placeholder="Fullname" />
    <input type="text" id="address" name="address" class="form-control" placeholder="Address" />
  </div>
</form>
<?php
$cn = mysqli_connect("localhost","root","","testdb");

$username = $_POST['username'];
$query = "SELECT * FROM tblajax WHERE username = '$username' ";
$result = mysqli_query($cn,$query);
$numrows = mysqli_num_rows($result);

$info_arr = array();

if ($numrows > 0 ) {
    while ($rows = mysqli_fetch_assoc($result)) {
        $fullname = $rows['fullname'];
        $address = $rows['address'];

        $info_arr[] = array("fullname" => $fullname, "address" => $address);
    }

}
else {
    echo "<script>alert('Unable to find the information');</script>";
}
    echo json_encode($info_arr);
    exit;
?>

Я хочу отправить это предупреждение, если данные не могут быть найдены:

echo "<script>alert('Unable to find the information');</script>";

А также я хочуочистить эти два текстовых поля, если данные не могут быть найдены:

<input type = "text" id = "fullname" name = "fullname" class = "form-control" placeholder = "Fullname" />
<input type = "text" id = "address" name = "address" class = "form-control" placeholder = "Address" />

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Вы должны отправить другой статус HTTP при ошибке, например, 404

if ($numrows > 0 ) {
    while ($rows = mysqli_fetch_assoc($result)) {
        $fullname = $rows['fullname'];
        $address = $rows['address'];

        $info_arr[] = array("fullname" => $fullname, "address" => $address);
    }

}
else {
    header("HTTP/1.0 404 Not Found");
}

и использовать ниже в JS, аналогично событию успеха

success: function(data) {
          //var len = data.length;

          //if(len > 0){

          var fullname = data[0]['fullname'];
          var address = data[0]['address'];

          document.getElementById('fullname').value = fullname;
          document.getElementById('address').value = address;

          //}

        },
error: function() {
   document.getElementById('fullname').value = '';
   document.getElementById('address').value = '';

   alert ('Unable to find the information');
}

или успешной регистрации: функция () whether данные [0] ['полное имя']; `существует

if (data[0]['fullname']) {
//do fill fields
} else {
 document.getElementById('fullname').value = '';
 document.getElementById('address').value = '';

 alert ('Unable to find the information');
}
0 голосов
/ 31 марта 2019

Один из способов сделать это - вернуть статус «успешно» в ваш JSON. Затем вы можете проверить это на стороне клиента и предупредить сообщение при необходимости. Таким образом, вы можете изменить свой код следующим образом:

PHP

if ($numrows > 0 ) {
    $info_arr['data'] = array();
    while ($rows = mysqli_fetch_assoc($result)) {
        $fullname = $rows['fullname'];
        $address = $rows['address'];

        $info_arr['data'][] = array("fullname" => $fullname, "address" => $address);
    }
    $info_arr['success'] = true;
}
else {
    $info_arr = array('success' => false);
}
echo json_encode($info_arr);
exit;

JQuery:

success: function(data) {

  if (data.success) {
      var fullname = data.data[0]['fullname'];
      var address = data.data[0]['address'];
      document.getElementById('fullname').value = fullname;
      document.getElementById('address').value = address;
  }
  else {
      document.getElementById('fullname').value = '';
      document.getElementById('address').value = '';
      alert('Unable to find the information');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...