忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

JavaScript PHPからのスクリプトの生成と制御

JavaScript の記事の中ではいままで全て静的なソースで説明を行ってきましたが、 今回は JavaScript のスクリプトを PHP から生成する例を示します。

Web のシステムを組む場合 PHP をよく使っていますが PHP では動的に HTML のスクリプトを生成します。
HTML のスクリプトと言っても結局は文字列の集合体であって JavaScript のスクリプトも同様に動的に出力できます。

以下の例は PHP のソースですがページが表示された最初にメッセージを表示する部分を JavaScript として動作する様に PHP で出力させています。

PHP から JavaScript を生成させる簡単な例(test-java.php 等のファイル名として実行)

<?php
//  javascript の文字列の生成
$strJavaScript = 
'<script>
    $(function() {
        alert("test");
    });
</script>
';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test jQuery</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<?php
//  生成された javascript の出力
echo $strJavaScript;
?>
</head>
<body>
    <p>テストメッセージ</p>
</body>
</html>


上記のソースは PHP のソースとしてファイル拡張子として .php としています。 当然のことながら Web 上では PHP が実行できる環境は必須です。
尚、 HTMLBODY 部の中身は特に意味があるものではありません。

これを実行させた場合に、アラートで「test」と表示されるはずです。 ブラウザで生成された HTML スクリプトは以下の様になるはずです。

■生成された HTML スクリプト

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test jQuery</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
    $(function() {
        alert("test");
    });
</script>
</head>
<body>
    <p>テストメッセージ</p>
</body>
</html>


今回の例は HEADBODY 部ともにほとんど固定されたものですが PHP ではそれらの中身全て動的に生成が可能ですし、 そういったことが一般的です。 今回は javascript の生成のみを可変的にしましたが PHP と組み合わせることで複雑なことができると思います。
例えば、$_GET$_POST などで動作指示を行い、今回のアラート表示の実行を制御することができます。

$_GET で動作指示を行う例

<?php
//  javascript の文字列クリア
$strJavaScript = '';
if (isset($_GET["alert"]) == true) {
    //  [test-java.php?alert] javascript の文字列の生成
    $strJavaScript = 
'<script>
    $(function() {
        alert("test");
    });
</script>
';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test jQuery</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<?php
//  生成された javascript の出力
echo $strJavaScript;
?>
</head>
<body>
    <p>テストメッセージ</p>
</body>
</html>

この例ですと「test-java.php?alert」とすればページが最初に表示された時にアラートが表示されます。
「test-java.php」のままではアラートは表示されません。












PR

コメント

コメントを書く