PHP将setTimeout()回显到javascript

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

我有一个使用PHP的ajax应用程序。它加载视频,ajax需要在从数据库获得的可变秒数后加载另一个视频。我试图在视频中回显setTimeout,就像这样,loadContent是加载视频的函数

            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没有解决为什么会这样。