PHP将setTimeout()回显到javascript
我有一个使用PHP的ajax应用程序。它加载视频,ajax需要在从数据库获得的可变秒数后加载另一个视频。我试图在视频中回显setTimeout,就像这样,loadContent是加载视频的函数PHP将setTimeout()回显到javascript,javascript,php,ajax,Javascript,Php,Ajax,我有一个使用PHP的ajax应用程序。它加载视频,ajax需要在从数据库获得的可变秒数后加载另一个视频。我试图在视频中回显setTimeout,就像这样,loadContent是加载视频的函数 echo '<iframe id="youtubeFrame" src="//www.youtube.com/embed/ '.$row['youtube'].' ?autoplay=1" frameborder="0" all
echo '<iframe id="youtubeFrame" src="//www.youtube.com/embed/
'.$row['youtube'].'
?autoplay=1" frameborder="0" allowfullscreen></iframe>';
$refreshTimer = $row['end'] - $time;
$refreshTimer = $refreshTimer * 1000;
echo $refreshTimer;
echo '<script>
setTimeout(loadContent, '.$refreshTimer.');
</script>';
echo';
$refreshttimer=$row['end']-$time;
$refreshTimer=$refreshTimer*1000;
回声刷新计时器;
回声'
setTimeout(加载内容,'.$refreshTimer');
';
视频加载时,变量refreshTimer的秒数是正确的,但它不会运行setTimeout
当数据库告诉页面刷新时,如何让页面刷新
更新:我被告知需要将变量转换为Int,但事实并非如此,因为当没有视频时,此代码将运行
echo '<h1>Upload content to start the show</h1>';
echo '<script>
setTimeout(loadContent, 4000);
</script>';
echo“上传内容开始播放”;
回声'
setTimeout(loadContent,4000);
';
这不涉及任何php变量,它是一个直接数,这也不起作用。我很好奇如何通过success将数据传递给ajax,但我在搜索时在线查找相关信息时遇到困难。根据您提供的信息,我的最佳猜测是PHP变量将被视为
字符串,而不是整数
因此,将其转换为如下所示:
echo '<script>
setTimeout(function(){loadContent();}, parseInt('.$refreshTimer.'));
</script>';
echo'
setTimeout(函数(){loadContent();},parseInt('.$refreshttimer');
';
旁注今后学习如何使用ajax分离PHP和JS(服务器端和客户端)是明智的:)为什么不在ajax成功时设置超时事件?echo$refreshTimer显示了什么?loadContent
是否至少被调用一次?不知道您是否将其与setInterval
$refreshttimer混淆,以显示我希望它显示的数量,并且loadContent正在获得它的初始调用。至于Syed Quaib,这是一个很好的观点。我还没有使用成功。我如何向它传递数据?你还没有告诉我,$refreshTimer
包含什么。它是string
还是int
数据类型?如果你不把它转换成一个数字,它就不会工作。我猜javascript会将php变量解释为字符串。所以试着使用parseInt
啊,我想你是对的,戴夫。一种方法比另一种更可取吗?您没有显示parseInt。另外,我可以在php变量上运行javascript函数。我以为parseInt应该与javascript函数一起使用。@Goose我现在已经编辑好了。PHP与JS是完全不同的语言,JS无法知道变量是否包含数字或字符串。在将其转换为整数之前,它通常默认为字符串。setTimeout需要一个数字,否则它将不起作用。啊,这不起作用。我更新了我的问题以显示另一个关键提示。@Goose我没有看到任何不同吗?@Goose请尝试我的更新版本,其中包含一个未命名的函数。它可能会解决这个问题——不知道如果parseInt没有解决为什么会这样。