(риторический вопрос)
Сегодня я столкнулся со странным сценарием, в котором я хотел, чтобы PHP обновлял поведение javascript на лету. Раздражало, вот что я попробовал ...
/*
* ajax-php-javascript-function-loader.php
*
* this gets called by AJAX and defines or re-defines the
* definition of dynamicDoStuff()
*/
<script type="text/javascript">
function dynamicDoStuff(a,b){
<?php
//dynamically defined function behavior
?>
}
</script>
Это не сработало, потому что при загрузке нового javascript область действия определения новой функции была ограничена новыми тегами сценария. Скрипты в других местах на странице не могли прочитать его.
Итак, вот что вам нужно сделать.
/*
* index.html
*/
<html>
<head>
<script type="text/javascript">
var dynamicDoStuff;
</script>
<!-- Other Head Stuff -->
</head>
<body>
<!-- the body of the site -->
</body>
</html>
и
/*
* axax-php-javascript-function-loader.php
*/
<script type="text/javascript">
dynamicDoStuff = function(a,b){
<?php
//dynamically define function behavior
?>
}
</script>
, определяя имя функции в заголовке, она становится общедоступной, поэтому вы можете динамически изменять ее назначение с помощью ajax и (php или чего-либо еще)