次のようなJavascriptでPHP varにアクセスできます。
<?php
$fruit = "Apple";
$color = "red";
?>
<script type="text/javascript">
alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "<?= $fruit ?>"
</script>
しかし、外部JSファイルを使用する場合はどうなりますか。
<script type="text/javascript" src="externaljs.js"></script>
externaljs.js:
alert("color: " + "<?php echo $color; ?>");
実際にアクセスするのではなく、ページを提供するときにJavaScriptコードに挿入します。
ただし、他のJavaScriptが外部ソースからのものでない場合は、次のようなことができます。
<?php
$color = "Red";
?>
<script type="text/javascript">var color = "<?= $color ?>";</script>
<script type="text/javascript" src="file.js"></script>
そして、file.jsで次のような色を使用します。
alert("color: " + color);
このように、JavaScriptのphpスクリプト(ここではjQueryを使用します)からデータにアクセスすることもできます。
このようなPHPファイル内に入力隠しフィールドを作成します
<input type="hidden" id="myPhpValue" value="<?php echo $myPhpValue ?>" />
javascriptファイルで:
var myPhpValue = $("#myPhpValue").val();
//From here you can the whaterver you like with you js Value
if(myPhpValue != ''){
//Do something here
}
これも仕事をします:)
私が見たのは、.jsファイルをphpインタープリターで実行させることです。 推奨できません
私がお勧めするのは、AJAXを介して値を取得し、PHPファイルが値をJSファイルに返すようにすることです。これははるかにクリーンな方法です。
まず、他のプログラムの変数に実際にアクセスできるプログラムはないことを理解する必要があります。
それに気づいたら、残りは簡単です。
メインファイルにjs変数を設定して外部jsを含めるか、PHPによって生成されたこの外部jsを動的にすることができます。
おそらく必要なものは、非同期JavaScriptおよびXML(AJAX)と呼ばれます: http://www.w3schools.com/ajax/default.aspa
基本的に、クライアントのJavaScriptからサーバー上のPHPスクリプトにメッセージを送信できることを想像してください。あなたが与えた例(externaljs.js)では、スクリプトはサーバーに$ colorは、HTTP経由です。スクリプトタグは、必要なJavaScriptを生成するPHPスクリプト。
汚染チェック、データ検証、セキュリティについてある程度理解しておくと役立ちます;)
他の人が言っているように、javascriptはphp変数にアクセスできません。ただし、DOMにはアクセスできます。したがって、phpを使用して、ページ要素に属性を追加できます。そして、javascriptを使用してこれらの属性にアクセスできます。
例えば<div id='Apple' class='red'>
はjavascriptで完全に利用可能です
<script type="text/javascript" src="externaljs.js"></script>
に変更できます
<script type="text/javascript" src="externaljs.php"></script>
そしてPHPスクリプトはそのようなJavaScriptを書くことができます:
<?php
$fruit = "Apple";
echo 'var fruit = '.json_encode($fruit);
...
AJAXのようにSepehr Lajevardiのほうがずっときれいだろう
ドンの解決策は良いです、さらに外部のjavasciptでphp配列を使用したい場合、これはあなたを助けることができます:
PHP:
<?php
$my_php_array = [];
?>
HTML:
<script type="text/javascript"> var my_js_array = <?php echo json_encode($my_php_array);?> ; </script>
<script src = "../public/js/my-external-js.js"></script>
Javasript:(通常のJavascript配列のように配列を使用できるようになりました)
my_js_array[0]
my_js_array.length
externaljs.jsは静的ファイルです。もちろん、PHP data。にアクセスできません。PHP dataをjsファイルに渡す唯一の方法は、ファイルに書き込むことによってファイルを物理的に変更することですPHPスクリプトで。ただし、これはせいぜい面倒な解決策です。
Furlafur Waageの回答に応じて編集します。jsファイルへの書き込みはonlyの方法ではないと思います。 jsをPHPインタープリターに通すことは、私の心を決して横切ることはありませんでした(正当な理由のため)。
2017-2018以降のソリューション:
まだ誰もそれを持ち出しておらず、関数_base64_encode
_と_json_encode
_を結合することを誰も考えていないので、PHPそのような配列変数を送信することさえできます:
index.php
_<?php
$string = "hello";
$array = ['hi', 'how', 'are', 'you'];
$array = base64_encode(json_encode($array));
_
次に、次のようなクエリ文字列のパラメータを使用して、目的のjsファイルを読み込むことができます。
_echo '<script type="text/javascript" src="js/main.php?string='.$string.'&array='.$array.'">';
_
次に、_js/main.php
_は、たとえば次のようになります。この方法で変数をテストできます。
js/main.php
_ <?php
if ($_GET['string']) {
$a = $_GET['string'];
}
if ($_GET['array']) {
$b = $_GET['array'];
}
$b = json_decode(base64_decode($b));
echo 'alert("String $a: + '.$a.'");';
echo 'alert("First key of Array $array: + '.$b[0].'");';
exit();
?>
_
_index.php
_を開くと、以下が出力されます。ご覧のとおり、_js/main.php
_を開かずに、そこからjavascript機能を取得しています。
他のことと同じようにinclude()
できます:
<?php
$fruit = "Apple";
$color = "red";
?>
<script type="text/javascript">
<?php include('/path/to/your/externaljs.js'); ?>
</script>
これは基本的に、外部ファイルをインラインjsとしてレンダリングします。ここでの主な欠点は、ブラウザのキャッシュによる潜在的なパフォーマンスの利点が失われることです。一方、JavaScriptでphp変数を再宣言するよりもはるかに簡単です。
あなたはそれをすることはできませんし、これは推奨されるアプローチではないので試してはいけませんが、外部のjsで書かれた関数に関数パラメータとしてphp変数を渡すことができます