Reputation: 729
I have a ajax that needs to return some values, but if I use a while()
to get all the result from my db, the return is "nothing". Where am I making mistake?
My Ajax script is posted below:
<script type="text/javascript" charset="utf-8">
function addmsg(type, msg) {
var obj = jQuery.parseJSON(msg);
// Your count variable
var count = obj.count;
// Your not variable
var not = obj.not;
$('#msg_count').html(count);
$('#notification').html(not);
}
function waitForMsg() {
$.ajax({
type: "GET",
url: "notification/select.php",
cache: false,
timeout: 50000,
success: function(data) {
addmsg("new", data);
setTimeout(
waitForMsg,
1000
);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
addmsg("error", textStatus + " (" + errorThrown + ")");
setTimeout(
waitForMsg,
15000);
}
});
};
$(document).ready(function() {
waitForMsg();
});
</script>
My php script is posted below:
$result = mysqli_query($con, "SELECT * from notification where tousername='$tousername' and isread = 0");
while ($row = mysqli_fetch_array($result)) {
$count = $result - > num_rows;
$not = $row['notification_msg'];
$res = [];
$res['count'] = $count;
$res['not'] = $not;
}
echo json_encode($res);
Upvotes: 1
Views: 140
Reputation: 332
re-write your script
function waitForMsg(){
$.get("notification/select.php",function(callback){
console.log(callback); // here is your data in callback variabel you can in in console log
})
}
Replce this code with your php script.
$result = mysqli_query($con, "SELECT * from notification where tousername='$tousername' and isread = 0");
$res['count'] = $result->num_rows;
while($row = mysqli_fetch_array($result)) {
$res[]['not'] = $row['notification_msg'];
}
echo json_encode($res);
Upvotes: -1
Reputation: 2517
Overwrite your value with same index. you can write this.
while($row = mysqli_fetch_array($result)) {
$count = $result->num_rows;
$not=$row['notification_msg'];
$res=[];
$res['count'][] = $count;
$res['not'][] = $not;
}
Or
while($row = mysqli_fetch_array($result)) {
$count = $result->num_rows;
$not=$row['notification_msg'];
$res=[];
$res[]['count'] = $count;
$res[]['not'] = $not;
}
echo json_encode($res);
die();
Write your js addmsg()
function.
function addmsg(type, msg) {
var obj = jQuery.parseJSON(msg);
// Your count variable
for(prop in obj){
var count = obj[prop][count];
var not = obj[prop][not];
$('#msg_count').html(count);
$('#notification').html(not);
}
}
Upvotes: 0
Reputation: 91734
You are overwriting your results variable in the loop:
while (...) {
...
$res=[];
...
}
You probably want something like:
$res['count'] = $result->num_rows;
while($row = mysqli_fetch_array($result)) {
$res[]['not'] = $row['notification_msg'];
}
echo json_encode($res);
Upvotes: 4