从外部javascript fi访问PHP var
我可以像这样使用Javascript访问PHP变量:
$fruit = "apple";
$color = "red";
?>
alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "= $fruit ?>"
但是,如果我想使用外部JS文件怎么办:
externaljs.js:
alert("color: " + "<?php echo $color; ?>");
12个解决方案
93 votes
您实际上并没有访问它,而是在为页面提供服务时将其插入到javascript代码中。
但是,如果您的其他JavaScript并非来自外部来源,则可以执行以下操作:
$color = "Red";
?>
然后在file.js中使用如下颜色:
alert("color: " + color);
Don answered -01-15T15:15:35Z
12 votes
您也可以像这样从Javascript中的php脚本访问数据(我将在此处使用jQuery)
在您的php文件中创建输入隐藏字段,如下所示
在您的javascript文件中:
var myPhpValue = $("#myPhpValue").val();
//From here you can the whaterver you like with you js Value
if(myPhpValue != ''){
//Do something here
}
这也可以做:)
Atanas Kovachev answered -01-15T15:16:09Z
8 votes
我所看到的是让.js文件通过php解释器运行。 我不推荐。
我建议您通过AJAX获取值,并使PHP文件将值返回到JS文件。 这是一种更清洁的方法。
Ólafur Waage answered -01-15T15:16:33Z
4 votes
首先,您必须了解,没有一个程序实际上可以访问另一个程序的变量。
当您意识到这一点时,剩下的就很简单了。
您可以在主文件中设置一个js变量,然后包含您的外部js,或者使外部js由PHP生成动态
Your Common Sense answered -01-15T15:17:02Z
4 votes
您可能想要的就是异步JavaScript和XML(AJAX):[/ajax/default.aspa]
基本上,假设能够将消息从客户端JavaScript发送到服务器上的PHP脚本。 在您提供的示例(externaljs.js)中,您将使脚本通过HTTP询问服务器$ color是什么。 您也可以将脚本标记指向生成所需JavaScript的PHP脚本。 这取决于您需要做什么。
它有助于对污点检查,数据验证和安全性有所了解;)
TerryP answered -01-15T15:17:32Z
3 votes
就像其他人说的那样,javascript无法访问php变量。 但是,它确实可以访问DOM。 因此,您可以使用php向某些页面元素添加属性。 然后,您可以使用javascript访问这些属性。
例如
对javascript完全可用
dnagirl answered -01-15T15:17:56Z
1 votes
externaljs.js是一个静态文件。 当然,它不能访问PHP数据。 将PHP数据传递到js文件的唯一方法是通过在PHP脚本中写入文件来物理更改文件,尽管这充其量是一个麻烦的解决方案。
根据ÓlafurWaage的回答进行编辑:我猜写js文件不是唯一的方法。 通过PHP解释器传递js从未使我烦恼(有充分的理由)。
Manos Dilaverakis answered -01-15T15:18:22Z
1 votes
您可以将其更改为
而且PHP脚本可以只写这样的JavaScript:
$fruit = "apple";
echo 'var fruit = '.json_encode($fruit);
...
尽管像Sepehr Lajevardi这样使用AJAX会更清洁
Serty Oan answered -01-15T15:18:50Z
1 votes
Don解决方案是好的,此外,如果您想在外部javascipt中使用php数组,则可以帮助您:
PHP:
$my_php_array = [];
?>
HTML:
Javascript :(您现在可以像使用普通Javascript数组一样使用该数组)
my_js_array[0]
my_js_array.length
Mr Rubix answered -01-15T15:19:23Z
1 votes
-及以上解决方案:
由于还没有人提出它,而且我猜还没有人想到将函数index.php和js/main.php组合在一起,因此您甚至可以发送PHP Array变量,如下所示:
index.php
$string = "hello";
$array = ['hi', 'how', 'are', 'you'];
$array = base64_encode(json_encode($array));
然后,您可以使用查询字符串的参数加载所需的js文件,如下所示:
index.php
然后,例如index.php将看起来像这样。 您可以通过以下方式测试变量:
js / main.php
if ($_GET['string']) {
$a = $_GET['string'];
}
if ($_GET['array']) {
$b = $_GET['array'];
}
$b = json_decode(base64_decode($b));
echo 'alert("String $a: + '.$a.'");';
echo 'alert("First key of Array $array: + '.$b[0].'");';
exit();
?>
当您打开index.php时,将输出以下内容。因此,您看到的是,没有打开js/main.php,您仍然从中获得了javascript功能。
AlexioVay answered -01-15T15:20:14Z
0 votes
您不能这样做,也不要尝试,因为这不是推荐的方法,但是您可以将php变量作为函数参数传递给用外部js编写的函数
sushil bharwani answered -01-15T15:20:34Z
0 votes
您可以像其他任何操作一样将它们设置为include():
$fruit = "apple";
$color = "red";
?>
基本上,这会将外部文件呈现为内联js。 这里的主要缺点是您失去了浏览器缓存的潜在性能优势。 另一方面,这比在javascript中重新声明php变量要容易得多。
billynoah answered -01-15T15:20:59Z