我试图将PHP变量用于我的Javascript代码中的字符串。但是我没有得到预期的结果。
我拒绝使用JQuery,我更喜欢使用纯Javascript,即使它需要更多的工作。
这是我的PHP文件: 的script.php
<?php
$filename = "./about.txt";
$doc = file_get_contents($filename);
echo $doc;
?>
它在我的PHP中运行正常。
我在我的action.js文件中试过这个:
function get_about() {
var text = "<?php echo $doc ?>";
document.getElementById("div2").innerHTML = text;
}
我将不胜感激任何帮助。我是网络编程的新手。 我做了一项研究,但没有帮助。
答案 0 :(得分:1)
你不能在Javascript文件中使用PHP变量,因为当JS在客户端工作时,PHP在服务器上工作。
您可以做的是在PHP文件上生成javascrit代码,并在javascript文件上使用此代码。
例如:
<强>的index.php 强>
<?php
$nameUser = "Marc";
...
...
echo '<script type="text/javascript">';
echo "var name = $nameUser;";
echo '</script>';
echo '<script type="text/javascript" src="/action.js" />'
?>
<强> action.js 强>
alert("Hello " + name );
这不是最漂亮的方式,但这个想法就在那里。
希望能帮到你
答案 1 :(得分:0)
抱歉,你不能用这种方式混合PHP和Javascript。
所以PHP不能使用Javascript,反之亦然Javascript在PHP之后行动,而Javascript可以使用PHP。
答案 2 :(得分:0)
好吧,正如其他人所说,你不能把JS和PHP混在一起。这是客户端/服务器架构,两者都是分开的。
我不知道你的情况,但是如果你从php打印JS(意思是来自同一个.php页面)那么你的方法可能会根据你的需要而工作。
但是因为你的JS是一个单独的文件。然后它只会在客户端的浏览器加载时执行。(这是你想要的吗?)
一旦代码在客户端浏览器上,它就无法看到服务器上的内容。从服务器获取一些数据的唯一方法是通过AJAX请求启动从数据中提取数据的请求(我想还有其他方法,但我限制自己的情况)。
因此我们有两个案例。
案例1:从PHP中分离JS并将其放在单独的文件中。
script.php示例
<?php
$filename = "./about.txt";
$doc = file_get_contents($filename);
echo $doc;
?>
。 。 action.js
//using pure js ajax request
function get_about() {
var ajaxRequest;
try {
ajaxRequest = new XMLHttpRequest();
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Connection lost. Please try again.");
return false;
}
}
}
ajaxRequest.onreadystatechange = function() {
if (ajaxRequest.readyState == 4) {
document.getElementById("div2").innerHTML = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "script.php");
ajaxRequest.send(null);
}
案例2:JS和PHP都位于同一个文件中,这意味着JS将与PHP代码一起打印并一起发送到客户端的浏览器。
方法1:打开javascript标记并将ur js代码放在那里
script.php示例
<?php
$filename = "./about.txt";
$doc = file_get_contents($filename);
echo "<script>
function get_about() {
document.getElementById("div2").innerHTML = '{$doc}'
}
</script>";
?>
请注意,如果将$ doc放入js字符串中,如果它包含(“,',&gt;,&lt;,\,/),则可能会分解,具体取决于您的html。
方法2:以前方法的组合。将数据分配给JS varibale并从JS文件访问它。通过这种方式,您仍然可以拥有单独的JS文件
script.php示例
<?php
$filename = "./about.txt";
$doc = file_get_contents($filename);
echo "<script>
var doc = '{$doc}'//global variable
</script>";
?>
action.js
//using pure js ajax request
function get_about() {
document.getElementById("div2").innerHTML = doc ;
}
答案 3 :(得分:0)
我知道这是一个3个月大的问题,但我发现它并认为我可以提供一些有用的东西。
如果要将此变量传递给JS脚本,则以下代码将起作用:
<强>的script.php 强>
<?php
$filename = "./about.txt";
$doc = file_get_contents($filename);
echo $doc;
?>
<script type="text/javascript">
var text = "<?php echo $doc ?>";
</script>
<script src="action.js"></script>
<强> action.js 强>
function get_about() {
document.getElementById("div2").innerHTML = text;
}
<强>解释强>
大多数具有标准配置的服务器不会处理.js
个文件,就此而言,任何非.php
文件都与.php
文件的处理方式相同。除非您设置了一些自定义配置,否则无法将<?php PHP code here ?>
放入script.js
。因此,在您提供的代码中,javascript变量text
的值等于字符串"<?php echo $doc ?>"
。
幸运的是,使用脚本的唯一方法不是使用外部脚本,而是可以使用带有<script>
标记的内联脚本。 PHP解释器将遍历.php
文件中的任何代码并查找这些代码 - <?php ?>
- 然后解释它们,这就是php
文件中的内联脚本按照它们的方式工作的原因。
答案 4 :(得分:0)
只需使用json_encode:
var text = <?php echo json_encode($doc); ?>;
答案 5 :(得分:-1)
给这个包括分号的镜头
function get_about() {
var text;
text = "<?php echo $doc; ?>";
document.getElementById("div2").innerHTML = text;
}
这里的工作示例 http://ideone.com/FLduOl
答案 6 :(得分:-2)
在您的头部中放置此代码:
<script type="text/javascript">
var text = "<?php echo $doc ?>";
</script>
<script type="text/javascript" src="/action.js" />
现在您可以在action.js中使用文本的值。