我试图在另一个查询数据库的PHP文件中重复调用一个函数。我们的想法是,当新值输入到数据库中时,循环就可以获取它们。
调用和循环似乎有效。但是没有获取数据库中的新值。
由于调用是在JS中完成的,我尝试使用XMLHttpRequest()但没有成功。
该调用设置“持续时间”的值。这是我希望在循环过去时更新的值。
“first()”位于“api.php”中。
<?php
include 'api.php';
?>
<script>
$(document).ready(function(){
var duration;
(function theLoop (i) {
setTimeout(function () {
if (--i) {
theLoop(i);
duration = <?php echo first("aaa"); ?>
if(duration > 29){
window.location.href = 'http://www.google.com';
}
else if(duration < 29){
}
}
}, 3000);
})(100);
});
</script>
您的问题是PHP代码只在页面加载时运行一次,并且会为您提供HTML代码。页面中的JS将使duration
始终引用PHP代码第一次运行时的值。
你真的需要为此使用AJAX并创建一个新的PHP页面来调用它将在每次发出请求时运行。
jQuery JS:
// HERE YOU DO A AJAX GET REQUEST
$.get({
// PASS VALUES TO THE PHP
data: {
"first": "aaa"
},
url: THE URL TO YOUR PHP PAGE,
// THE SUCCESS FUNCTION IS WHAT WILL RUN WHEN THE GET COMPLETES SUCCESSFULLY
success: function(duration) {
// DO WHAT YOU WERE GOING TO DO
if(duration > 29){
window.location.href = 'http://www.google.com';
}
else if(duration < 29){
}
},
error: A FUNCTION TO HANDLE WHAT TO DO IF THE REQUEST DOES NOT COMPLETE
});
PHP
<?php
include 'api.php';
// GET THE PARAMETER FROM THE JS
$firstParam = $_GET["first"]
echo first(firstParam);
?>