i am new to php,js and ajax, i am trying to display data from database with ajax but it doesn't seem to be working(console.log isn't executing). can anyone say what is wrong with the code?
at first i though jquery library isn't properly loaded but now i have included jquery library just above the function html/-
<div class="dropdown-menu" id="studentNames">
<a class="dropdown-item" href="#">Action</a>
<?php
$conn=connectDB();
$sql = "SELECT * FROM students";
$result = $conn-> query($sql) or die('error'.mysqli_error($conn));
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
echo "<p class='dropdown-item' onClick=myfunction('$row[name]')>"."$row[name]"."</p><br>";
}
}
?>
js code/-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"</script>
<script>
function myfunction(name){
$(document).ready(function(){
$.ajax({
url:"showStudents.php", //the page containing php script
type: "post", //request type,
dataType: 'json',
data: {
registration: "success",
name: name
},
success:function(){
console.log("data");
}
});
});
}
php code/-
if(isset($_POST['registration'])&&$_POST['registration']== "success"){
$regstration = $_POST['registration'];
$name = $_POST['name'];
$array = array();
$conn = connectDB();
$sql = "SELECT * FROM students where name='$name'";
$result = $conn-> query($sql) or die('error'.mysqli_error($conn));
if($result->num_rows>0){
while($row=$result->fetch_assoc())
{
array_push($array,$row['name'],$row['branch']);
}
echo $array;
}
}
You need convert array to json string and then display (echo) return to javascript:
<?php
echo json_encode($array);
?>
Your console.log
is not executed because your ajax is not successful.
First of all you have a php error, array to string conversion when you try to echo your array.
Instead use echo json_encode($array);
so you return a json object in your ajax.
I will assume that your variable name
is defined somewhere above you don't show us since that would lead to a js error that you would have seen probably.
Also your success function is expecting a parameter :
success:function(){
console.log("data");
}
this code will console.log
the string data
. If you want the output of your php to be there (which i guess is what you are trying to achieve) you must use:
success:function(data){
console.log(data);
}
Surely this line
success:function(){
should read
success: function(data) {
with the data returned from your PHP code in data
.