重新加载功能,使fancybox出现

时间:2014-05-22 18:04:54

标签: javascript php jquery fancybox

我(在用户的帮助下)已经做了一个页面,它具有读取txt文件上的值的功能,如果它是“1”,则会出现带有iframe的fancybox(版本2)。

代码ReadAndAppear.php

<?php

$lines = file('alerta.txt');
$valrec= $lines[0];

echo $valrec;
if($valrec == 1){
?>
<script type="text/javascript">
jQuery(document).ready(function($){
    $.fancybox({
        href: "alert.php",
        type: "iframe"
    });
}); //ready
</script>
<?php
}; // closes if
?>

所以,如果 valrec “1”,请尝试重新加载此函数/页面( 5-5秒)以显示fancybox >我创建了一个新页面,我们称之为index.php

index.php代码

<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#ReadAndAppear').load('ReadAndAppear.php').fadeIn("slow");
}, 50000); // refresh every 10000 milliseconds

</script>

<div id="ReadAndAppear"></div>

遗憾的是,当 valrec = 1 时,此代码不会使fancybox出现在index.php上。此算法仅刷新并显示图像, echos 等,但不是 fancybox

我如何刷新并出现在 index.php 上,或者更好地出现在 ReadAndAppear.php

感谢

2 个答案:

答案 0 :(得分:0)

最好将fancybox功能存储在单独的JS文件中。然后你可以在ReadAndAppear加载函数的回调中调用它 -

<script type="text/javascript">
var auto_refresh = setInterval(
    function ()
    {
        $('#ReadAndAppear').load('ReadAndAppear.php').fadeIn("slow", function(){
            $.getScript('fancybox.js'); // gets and runs script
        });
    }, 50000); // refresh every 10000 milliseconds
</script>

在ReadAndAppear.php中,您可以进行更改以加载相同的脚本 -

<?php

$lines = file('alerta.txt');
$valrec= $lines[0];

echo $valrec;
if($valrec == 1){
?>
    <script type="text/javascript">
    jQuery(document).ready(function($){
        $.getScript('fancybox.js');
    }); //ready
    </script>
<?php
}; // closes if
?>

现在将脚本放在自己的文件 facybox.js

$.fancybox({
    href: "alert.php",
    type: "iframe"
});

老实说,这样做既有好处也有坏处。我认为,正如我在评论中所说,我认为你的逻辑需要重新思考一下。如果我的代码组织得很好并且项目中包含的内容不同,我就不必使用$.getScript()。这将更容易维护。

答案 1 :(得分:0)

将脚本移动到index.php中,我会这样做:

<script type="text/javascript">
var myRefresh;
jQuery(document).ready(function($){
    myRefresh = setInterval(function(){
    <?php
    $lines = file('alerta.txt');
    $valrec= $lines[0];
    echo $valrec; // do you need this echo ?
    if($valrec == 1){
    ?>
        $.fancybox({
            href: "alert.php",
            type: "iframe"
        });
    <?php  } else {  ?>
        clearInterval(myRefresh); // cancel interval if $valrec != 1
    <?php
    }; // closes if else (php)
    ?>
    },5000); // setInterval
}); //ready
</script>