Javascript と PHP の相互作用
私たちは皆、Javascript がクライアント側 (つまりブラウザー) で実行され、PHP がサーバー側ツール (つまりサーバー側) であることを知って育ちました。明らかに、2つは相互作用できません。
しかし -- 朗報です。動作させることができます。その方法は次のとおりです。
目的は、サーバーから Javascript 環境に動的情報 (サーバー構成アイテムなど) を取得して、必要なときに使用できるようにすることです。通常、これは、プレゼンテーションに対する DHTML の変更を意味します。
まず、DHTML の使用法を明確にするために、次の DHTML の例を引用します。
<script type="text/javascript">
function updateContent() {
var frameObj = document.getElementById("frameContent");
var y = (frameObj.contentWindow || frameObj.contentDocument);
if (y.document) y = y.document;
y.body.style.backgroundColor="red"; // demonstration of failure to alter the display
// create a default, simplistic alteration usinga fixed string.
var textMsg = 'Say good night Gracy';
y.write(textMsg);
y.body.style.backgroundColor="#00ee00"; // visual confirmation that the updateContent() was effective
}
</script>
ID="frameContent" を含む html ファイルがどこかにあると仮定すると、単純な < body onload="updateContent()" > で表示を変更できます。
ゴーリージー; これを行うために PHP は必要ありません。しかし、これにより、PHP が提供するコンテンツを適用するための構造が作成されます。
問題の Web ページを PHTML タイプに変更して、サーバー側の PHP がコンテンツにアクセスできるようにします。
**foo.html becomes foo.phtml**
そのページの上部に追加します。また、後でアクセスできるように php データをグローバルにロードします - 次のように:
<?php
global $msg1, $msg2, $textMsgPHP;
function getContent($filename) {
if ($theData = file_get_contents($filename, FALSE)) {
return "$theData";
} else {
echo "FAILED!";
}
}
function returnContent($filename) {
if ( $theData = getContent($filename) ) {
// this works ONLY if $theData is one linear line (ie remove all \n)
$textPHP = trim(preg_replace('/\r\n|\r|\n/', '', $theData));
return "$textPHP";
} else {
echo '<span class="ERR">Error opening source file :(\n</span>'; # $filename!\n";
}
}
// preload the dynamic contents now for use later in the javascript (somewhere)
$msg1 = returnContent('dummy_frame_data.txt');
$msg2 = returnContent('dummy_frame_data_0.txt');
$textMsgPHP = returnContent('dummy_frame_data_1.txt');
?>
これで、javascript は次のように PHP グローバルにアクセスできます。
// グローバルにアクセスして var textMsg = '< ? PHP グローバル $textMsgPHP; echo "$textMsgPHP"; ? >';
JavaScript で、次のように置き換えます。
var textMsg = 'Say good night Gracy';
with: // php returnContent() を使用
var textMsg = '< ? php $msgX = returnContent('dummy_div_data_3.txt'); エコー "$msgX" ? >';
概要:
- 変更する Web ページは、phtml または何らかの php ファイルでなければなりません
- そのファイルの最初のものは < ? 動的データを取得する php ?>
- PHP データには独自の CSS スタイルが含まれている必要があります (コンテンツがフレーム内にある場合)
- 動的データを使用する JavaScript は、この同じファイルにある必要があります
- 動的データにアクセスするために、必要に応じて PHP に出入りします
- 注意:- 外側の JavaScript では一重引用符を使用し、動的 php データでは二重引用符のみを使用してください
解決予定: ファイル名を指定してupdateContent()を呼び出し、 onLoad( )の代わりにonClick()を介して使用する
検査のために Sample_Dynamic_Frame.zip で例を提供できますが、それを添付する手段が見つかりませんでした