忍者ブログ

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 が実行できる環境は必須です。
尚、 HTML の BODY 部の中身は特に意味があるものではありません。

これを実行させた場合に、アラートで「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>


今回の例は HEAD 部 BODY 部ともにほとんど固定されたものですが 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

コメント

コメントを書く