Я проверил несколько сообщений, но я не мог заставить его работать. Здесь, где я пришел так далеко:
myApp.controller('customersCtrl', function($scope, $http, $timeout) {
var polling = function() {
var value = $http({
method: 'GET',
url: 'poll.php'
});
value.success(function(data, status, headers, config) {
$scope.records = data;
});
$timeout(function() {
polling();
}, 3000);
};
polling();
});
<?php
$db = new mysqli('fdb4.freehostingeu.com', '1584066_users', '*******', '1584066_users');
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
$db->set_charset("utf8");
if(!$result = $db->query("SELECT * FROM mtp ORDER BY date DESC")){
die('There was an error running the query [' . $db->error . ']');
}
while($row = mysqli_fetch_assoc($result)){
$row["date"] = strtotime($row["date"]) * 1000;
$records[] = $row;
}
print( json_encode($records));
$result->free();
$db->close();
?>
Он работает на первом poll();
но не обновляется, если таблица SQL обновляется снаружи.
EDIT: Я попробовал это случайно, и каким-то образом метод POST работал в моем случае.
Когда вы используете $ interval или $ timeout, тогда когда-то вам нужно использовать $ apply, попробуйте использовать $ apply, он будет работать.
Вот ваш ответ
myApp.controller('customersCtrl', function($scope, $http, $timeout) {
var polling = function() {
var value = $http({
method: 'GET',
url: 'poll.php'
});
value.success(function(data, status, headers, config) {
$scope.records = data;
$scope.$apply(); //Use $apply to start digest process manually.
$timeout(function() {
polling();
}, 3000);
});
};
});
Вам нужно $interval
вместо $timeout
.
$ timeout только ждать 3 секунды и совершать вызов, а затем останавливается. С интервалом $ вы можете вместо этого подождать 3 секунды, вызвать опрос, подождать 3 секунды, вызвать опрос и т.д....
myApp.controller('customersCtrl', function($scope, $http, $interval) {
var polling = function() {
var value = $http({
method: 'GET',
url: 'poll.php'
});
value.success(function(data, status, headers, config) {
$scope.records = data;
});
$interval(function() {
polling();
}, 3000);
};
polling();
});