CharlieT
CharlieT

Reputation: 414

AJAX get() data

I have a block of jQuery which uses the $.get() method in a setInterval(). I don't understand how to get data from the second URL to the jQuery code.

Jquery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
   <script type="text/javascript">
setInterval(function() {
$.getJSON("check_time.php", function(update) {
    if (update) {
        $("#slideshow").load("phppage.php");
    }
});
}, 600000);
</script>

PHP - check_time.php

<?php
require_once('connect_pdo.php');
header('Content-type: application/json');
$stmt = $conn->prepare("$sqlst = $conn->prepare("SELECT COUNT(*) AS count
                     FROM ads
                     WHERE lastupdate > NOW() - INTERVAL 10 MINUTE");
$sqlst->execute();
$row = $sqlst->fetch();");
$stmt ->execute();
$row = $stmt ->fetch();
$update = $row['count'] > 0;
$updtstatus =  json_encode($update);
echo "$updtstatus";



?>

I am not getting the variable from check_time.php to the update variable in function(update).

Upvotes: 1

Views: 157

Answers (2)

user2560539
user2560539

Reputation:

Small alter in php page

$updtstatus =  json_encode(array('count'=>$update));
echo $updtstatus;

Now your JSON is in fact something like this {"count":"true"}. So change your if statement slightly.

   $.getJSON("check_time.php", function(update) {
        if (update.count===true) {
            $("#slideshow").load("phppage.php");
        } else {
            console.log("No results");
        }
    });

This fiddle simulates the above answer

Upvotes: 2

JasonK
JasonK

Reputation: 5294

Your jQuery functions expects data to be returned in JSON format, so simply do so :) I've also found some flaws within your PHP code. This should do the trick:

$.get('check_time.php', function(data) {
    console.log(data); // Console logging is always good

    if (data.status) {
        alert('Load slideshow');
    }
});

check_time.php

<?php
require_once('connect_pdo.php');

$json = []; // The JSON array which will be returned

$stmt = $conn->prepare("SELECT COUNT(*) AS count FROM ads WHERE lastupdate > NOW() - INTERVAL 10 MINUTE");
$stmt->execute();

$json['status'] = (bool) $stmt->rowCount(); // Status is either false (0) or true (> 0)

echo json_encode($json);

Upvotes: 0

Related Questions