javascript — используйте SetInterval, если условие If истинно

Возможно ли это, если значение $ новый меняется тогда вар функция updateChart перезагрузите снова, а затем снова идет к функция проверки вар и снова имейте то же самое условие на этом.

var updateInterval = 3000;
var updateChart = function() {
var check = function() {
if(<?php echo $new; ?>).change(function(){
setInterval(function(){updateChart()}, 1000);
});
}
dps.push(<?php echo $str; ?>);
chart.render();
};

Будет оценено
Благодарю.

1

Решение

Итак, в основном вы хотите обновить диаграмму, как только на стороне сервера будет записано какое-то значение, верно? Как упоминалось в моем комментарии, использование операторов PHP в вашем блоке JS не будет работать, так как код PHP будет выполняться при загрузке страницы и впоследствии не изменится. Вместо этого вы должны использовать двухэтапный подход:

  • Используйте повторяющийся вызов AJAX для опроса изменений
  • Создать страницу PHP, которая сообщает об изменениях

Код JS (используя Jquery):

window.setInterval(function() {
$.ajax('change-listener.php', {
success: function(data) {
if (data.changed) {
for(var i in data.newValue) {
dps.push(data.newValue[i]);
}
chart.render();
}
}
});
}, 3000);

Проверьте, какие строки были записаны за данный промежуток времени (при условии, что ваша таблица, в которую вы правите записи, имеет временную метку) и вернет соответствующие значения через JSON в сценарий JS:

Код PHP:

$query= 'SELECT strValue FROM [YOURTABLE] WHERE created > DATE_SUB(now(),INTERVAL 3 SECOND)';

$data= array();
if ($result = $mysqli->query($query)) {
if (mysqli_num_rows($result)) {
$data['changed']= TRUE;
while($obj = $result->fetch_object()){
$data['newValues'][]= $obj->strValue;
}
} else {
$data['changed']= FALSE;
}
}
$result->close();

header('Content-Type: application/json');
print json_encode($data);

Альтернативным способом было бы сохранить вновь созданные значения в сеансе пользователя:

PHP-код, часть 1 (внутри скрипта, который обрабатывает сохранение новых значений):

session_start();
$_SESSION['newValues'][]= $str;

PHP-код, часть 2 (вместо опроса базы данных, опросите сеанс):

session_start();
if (isset($_SESSION['newValues'])) {
$data['changed']= TRUE;
$data['newValues']) $_SESSION['newValues'];
unset($_SESSION['newValues'];
} else {
$data['changed']= FALSE;
}

Второй подход — это чисто однопользовательский сценарий: как только PHP-скрипт запрашивает изменения, изменения возвращаются один раз, а затем список изменений сбрасывается, чтобы никогда не возвращать одинаковые значения дважды.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]