php not" echoing ing"正确的javascript

时间:2015-04-06 21:47:53

标签: javascript php jquery html iframe

我正在尝试根据访问者的年龄显示不同的iframe而不进行重定向/刷新。

然而,在验证访问者年龄后,javascript未正确应用,或根本没有。

我一直以空白的iframe结束。 有人请看下面的代码:

<html>
<head><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script></head>
<form method="post">
    <input type="date" name="dob"><br>
    <input type="submit" name="submit" value="Verify Age" />
</form>
<?php
$minAge = 18; // You might read this from a file/database.
$minAge *= 3600*24*365.25;  // $minAge in seconds

if(isset($_POST['submit'])){
    $birth_date = strtotime($_POST['dob']);
    $now = strtotime("now");
    $age = $now - $birth_date; // age is in seconds
    if($age > $minAge)
        echo '<script>$("#myiframe").attr("src", "http://URL1.com");</script>';
    else
        echo '<script>$("#myiframe").attr("src", "http://URL2.com");</script>';
} ?>
<iframe id="myiframe"></iframe>
</html>

2 个答案:

答案 0 :(得分:2)

在将iframe添加到DOM之前,您的js正在触发。您可以在echo标记下移动您的PHP代码(至少渲染,即iframe)或使用$(document).ready(function(){<...>})之类的内容。顺便说一下,有一种更优雅的方式:

<?php
   $minAge = 18; // You might read this from a file/database.
   $minAge *= 3600*24*365.25;  // $minAge in seconds

   if(isset($_POST['submit'])){
      $birth_date = strtotime($_POST['dob']);
      $now = strtotime("now");
      $age = $now - $birth_date; // age is in seconds
?>

    <iframe id = "myiframe"
            src = "<?php echo ($age > $minAge ? 'http://URL1.com' : 'http://URL2.com'); ?> ">
    </iframe>

<?php } ?>

答案 1 :(得分:0)

当您的脚本运行时,DOM还没有呈现iframe。您需要将iframe移动到呈现脚本标记的php代码段之上。