2010-08-05 5 views
0

Работа на той же странице, что и раньше, но теперь я использую ее как площадку для общения с jQuery, поэтому я могу узнать ее для my'boss. ' К сожалению, я не могу запустить javascript в этом файле, не говоря уже о том, чтобы предупредить меня. Все PHP и HTML на странице работают отлично, это просто сценарий. Что я делаю не так?Смешивание PHP и jQuery

<?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> 

ответ

5

Вы звоните playAnimation() до вашего <html> тега, так что ваш HTML имеет неверный формат. JQuery, вероятно, не может найти элемент #blur, потому что он не находится на вашей веб-странице, а тем более внутри <body>.

Переместите блок кода if(isset($_POST['mushu'])) ... где-нибудь после тега тела.

+0

Хорошо, так что я переехал PHP т o после тега body, но до '' и до сих пор ничего не происходит. Я неправильно форматирую jQuery? – Andy

+1

Ваш jquery нечетный - вы настроили его так, чтобы при нажатии на изображение была установлена ​​функция размытия() на изображении. Почему бы вам не попробовать сначала нажать кнопку(), чтобы вы могли видеть ее работу. –

1

Проверьте консоль FireBug или консоль ошибок FireFox.

+0

Не думайте, что это должно было быть проголосовано ... +1 –

+0

Я проголосовал за это, похоже, комментарий для меня. – Reigel

0

Как Скотт сказал, что вам нужно повторить div в фактическом теле страницы. Кроме того, я думаю, что у вас еще одна проблема: вы вызываете .blur, это событие, когда ваша мышь покидает изображение. Поскольку у вас есть функции, такие как анимация, я думаю, что вы действительно можете найти .fade http://api.jquery.com/fadeOut/. Попробуйте что-нибудь вроде:

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

Проверьте, включен ли jquery.js, и проверьте консоль ошибок.

В противном случае, несколько очевидных ошибок, которые могут или не могут вносить вклад в ваши яваскрипта проблемы:

  • Вы вывод HTML в playAnimation() до вашего открытия HTML тега
  • атрибут действия вашей формы является пустым - вы нужно <?= или <?php echo
  • тегах сценария следует читать <script type="text/javascript">
Смежные вопросы