Javascript和PHP的交互
我们都知道 Javascript 在客户端(即浏览器)上运行,而 PHP 是服务器端工具(即服务器端)。很明显,两人只是无法互动。
但是——好消息;它可以工作,这就是方法。
目标是从服务器获取一些动态信息(比如服务器配置项)到 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 提供的内容创建了一个结构。
我们将相关网页更改为 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');
?>
现在我们的 javascripts 可以像这样访问 PHP 全局变量:
// 通过访问全局变量 var textMsg = '< ? php 全局 $textMsgPHP; echo "$textMsgPHP"; ? >';
在javascript中,替换
var textMsg = '说晚安格雷西';
with: // 使用 php returnContent()
var textMsg = '< ? php $msgX = returnContent('dummy_div_data_3.txt'); 回声“$msgX”?>';
概括:
- 要修改的网页必须是 phtml 或一些 php 文件
- 该文件中的第一件事必须是 < ? php获取动态数据?>
- php 数据必须包含自己的 css 样式(如果内容在框架中)
- 使用动态数据的 javascript 必须在同一个文件中
- 我们根据需要加入/退出 PHP 以访问动态数据
- 注意:- 在外部 javascript 中使用单引号,在动态 php 数据中仅使用双引号
待解决:使用文件名调用updateContent()并通过onClick()而不是onLoad()使用它
Sample_Dynamic_Frame.zip 中可以提供一个示例供您检查,但没有找到附加方法