これが私が持っているスクリプトです。ページ表示後にロードしようとしています。 PHP JavaScriptからのコードを実行しようとしています。必要なのは、テキストボックスコントロールでフォームを送信したユーザーのメールアドレスを取得することです。
var originator_email = document.getElementById("jform_sendto_first_step");
originator_email.value = "<?php echo JFactory::getUser($this->item->created_by)->get('email'); ?>"
これは私が持っているエラーです。 オブジェクトコンテキストにないときに$ thisを使用 bla bla bla。これを行う適切な方法は何ですか?
コードを含めようとしました:
<?php echo JFactory::getUser($this->item->created_by)->get('email'); ?>
ページに直接入力すると、結果は画面に問題なくスローされます。
Lodderが言うように、(ブラウザーで実行される).jsファイルがPHP-サーバーで実行される)を実行することは期待できません。
これを回避する最も簡単な方法は、サーバー側でJavaScriptコードをエコーすることです。テンプレートのindex.phpに、セクションのどこかに次の行を追加します。
<script type="text/javascript">
<?php echo JoomlaEmail = "' . JFactory::getUser($this->item->created_by)->get('email') . "';"; ?>
</script>
PHPがテンプレートファイルを実行すると、次のようにブラウザに出力されます。
<script type="text/javascript">
JoomlaEmail = "[email protected]";
</script>
これで、元のJavaScriptコードで次のことができるはずです。
var originator_email = document.getElementById("jform_sendto_first_step");
originator_email.value = JoomlaEmail;
この方法で物事を行うと、Javascriptsグローバル名前空間を汚染しますが、これは実際に行われたことではありませんが、このメソッドを使用して、PHPファイルにカプセル化されたJSコードを書き出すことができるはずです。関数内。
<script type="text/javascript">
(function () {
var originator_email = document.getElementById("jform_sendto_first_step");
originator_email.value = "<?php echo JFactory::getUser($this->item->created_by)->get('email'); ?>"
})();
</script>