混合PHP和jQuery

时间:2010-08-05 14:00:33

标签: php jquery html

和以前一样在同一个页面上工作,但现在我正在使用它作为玩弄jQuery的游乐场,所以我可以为我的'boss'学习它。不幸的是,我无法在此文件中执行javascript来执行,更不用说给我一个警告。页面上的所有PHP和HTML都能很好地工作,这只是脚本的问题。我做错了什么?

<?php

  if( isset($_POST['mushu']) )
  {
    playAnimation();
    clickInc();
  }

  function playAnimation()
  {
     echo "<img src='cocktail-kitten.jpg' id='blur'>";
  }

  function clickInc()
  {
    $count = glob("click*.txt");

    $clicks = file($count[0]);
    $clicks[0]+=1;

    $fp = fopen($count[0], "w") or die("Can't open file");
    fputs($fp, $clicks[0]);
    fclose($fp);

    echo $clicks[0];

  }
?>

<html>

  <head>

    <title>Adobe Kitten</title>

    <script type="text/javascript" src="jquery.js"></script>

  </head>

  <body>

    <form action="<?php $_SERVER['PHP_SELF']; ?>"
          method="post">
    <input type="submit"
           value="Let's see what Mushu is up to."
           name="mushu">
    </form>

    <script>
      $(document).ready( function()
      {
        $('#blur').click( function()
        {
          $(this).blur( function()
          {
            alert('Handler for .blur() called.');
          });
        });
      });
    </script>
  </body>
</html>

4 个答案:

答案 0 :(得分:5)

您在playAnimation()标记之前呼叫<html>,因此您的HTML格式不正确。 JQuery可能找不到#blur元素,因为它实际上并不在您的网页中,更不用说在<body>内。

if( isset($_POST['mushu'])) ...代码块移到body标记之后的某处。

答案 1 :(得分:1)

检查FireBug的控制台或FireFox的错误控制台。

答案 2 :(得分:1)

验证是否包含jquery.js,并检查错误控制台。

否则,一些明显的错误可能会或可能不会导致您的javascript问题:

  • 您在打开HTML标记之前在playAnimation()输出HTML
  • 您的表单的操作属性为空白 - 您需要<?=<?php echo
  • 您的脚本标记应为<script type="text/javascript">

答案 3 :(得分:0)

就像Scott说的那样,你需要在页面的实际主体中回显div。此外,我认为你遇到的另一个问题是你正在调用.blur,这是鼠标离开图像时的事件。由于你有类似动画的功能,我认为你可能真的在寻找.fade http://api.jquery.com/fadeOut/。尝试类似:

<script>
    $(document).ready( function()
    {
        $('#blur').click( function()
        {
            $(this).fadeOut('slow', function()
            {
                alert('All Done');
            });
        });
    });
</script>