myPlugin.start($val); // tried this, didn't work
Это не работает, потому что $val
не определено для javascript, т.е. php ничего не выводил для $val
. Попробуйте просмотреть источник в своем браузере, и вот что вы увидите:
myPlugin.start(); // tried this, didn't work
И
<?php myPlugin.start($val); ?> // this didn't work either
Это не работает, потому что php попытается обработать myPlugin
как константа, и когда это не удается, он попытается рассматривать его как строку 'myPlugin'
, которую он попытается связать с выходом функции php start()
, и поскольку это не определено, это приведет к фатальной ошибке
И
myPlugin.start(<?=$val?> // this works sometimes, but sometimes it fails
Хотя это, скорее всего, сработает, так как php создает допустимый javascript с ожидаемыми аргументами, если он не работает, скорее всего, потому что myPlugin
не готов все же. Проверьте свой порядок выполнения.
Также вы должны заметить, что установка php out небезопасна и должна быть отфильтрована с помощью json_encode()
EDIT
Поскольку я didn Не заметите отсутствующую скобку в myPlugin.start(<?=$val?>
: - \
Как указывает @Second Rikudo, для правильной работы $val
необходимо будет содержать закрывающую скобку, например: $val="42);"
Значение php теперь будет генерировать myPlugin.start(42);
и будет работать как ожидалось при выполнении javascript