JavaScriptへの値の送信


7

Drupalでフォームのテーマハンドラーを設定しました。このハンドラーにはテンプレートファイルがあります。そのインクルードファイルでPHPからJavaScriptに値を送信する最も簡単な方法は何ですか?

回答:


13

Drupalでこれを行う標準的な方法は、「設定」タイプを使用してdrupal_add_jsを使用することです。

drupal_add_js(array('variableName' => 'value'), 'setting');

これにより、JS側でDrupal.settings.variableNameで変数を使用できるようになります。


1

いくつかのより多くの例drupal_add_js

問題を回避するには、JS変数を追加するときにモジュール名を指定することをお勧めします。

drupal_add_js(array('myModule' => array('key' => 'value')), 'setting');

DOMの初期化後にJSコードを実行したい場合は、

drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });', 'inline');

1

また、#attachedフォームのキーを使用して、php変数をjsに送信できます。

  $my_variable = 'My custom value';
  $form['some-element']['#attached']['js'] = array(
    array(
     'data' => drupal_get_path('module', 'my_module') . '/js/script.js',
    ),
    array(
      'data' => array(
        'variable' => $my_variable,
       ),
      'type' => 'setting',
    ),
  );

これはhook_form_alter、たとえばで使用できます。


-10

最も簡単な方法は、それをスクリプトタグにエコー出力することです。

<script type="text/javascript">
   var variableName = <?php echo $variable ?>;
</script>

Drupalがテンプレート言語を使用している場合は、を関連する<?php echo... ?>出力メソッドに置き換える必要があります...


また、変数が文字列の場合は、引用符で囲み、必要に応じてエスケープする必要があります。

1
Drupal.settingsを使用したスコットの提案は、間違いなくこれを行う正しい方法です。
Chaulky

1
これは、垂れ幕の標準ではありません。
Jayendra Kainthola 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.