如何在外部php文件中使用echo函数在javascript中定义变量?
我们有 theconfigfile.php , thejsfile.js 和 thephpfile.php 。
在 theconfigfile.php 中,我们有:
<?php
$path = 'http://example.com/home.php'; // Set your path
?>
在 thejsfile.js 中,我们有:
...
if (confirm("Are you sure you want to delete")) {
$.ajax({
type: "POST",
url: "http://example.com/home.php",
data: dataString,
cache: false
});
...
在 thephpfile.php 中,我们有:
<php
include "theconfigfile.php";
?>
<html>
<head>
<script type="text/javascript" src="thejsfile.js"></script>
</head>
<body>
...here is the code that uses file thejsfile.js...
</body>
</html>
我使用了这种方法:
...
if (confirm("Are you sure you want to delete")) {
$.ajax({
type: "POST",
url: "<?php echo $path; ?>",
data: dataString,
cache: false
});
...
仅当javascript是代码的一部分时才有效。如果我在外面使用它,就像这样...
<script type="text/javascript" src="thejsfile.js"></script>
......不起作用!溶液
答案 0 :(得分:5)
有几种方法可以做到这一点。
您可以将您的网络服务器配置为使用PHP处理扩展名为.js
的文件,然后将PHP注入其中。当然,这意味着你需要一种方法来实际计算你的变量,这会减慢你提供常规javascript内容的速度。
您可以简单地将PHP变量输出到<script>
元素中的Javascript变量,如此
<script type="text/javascript">
var path = "<?php echo $path; ?>";
</script>
然后在AJAX中访问此path
变量。大多数人可能会使用第二种方法。
答案 1 :(得分:4)
您可以将thejsfile.js
重命名为thejsfile.php
,将以下内容添加到非常开头中,并且应该针对PHP进行解析:
<?php header("Content-type: text/javascript"); ?>
然后像这样引用它:
<head>
<script type="text/javascript" src="thejsfile.php"></script>
</head>
您的另一个选择是将服务器设置为解析PHP的.js
个文件。
答案 2 :(得分:2)
在thephpfile.php中,
<html>
<head>
<script type="text/javascript">
var config = { url: '<?= $path; ?>' };
</script>
<script type="text/javascript" src="thejsfile.js"></script>
</head>
然后你可以在你的javascript中使用config.url访问它。
答案 3 :(得分:0)
您只能以这种方式将值放入PHP处理的文件中。
外部JavaScript文件不由PHP处理,因此它们按原样链接而没有附加。
答案 4 :(得分:0)
除非您通过JSONP向另一台服务器发帖,否则您可能只考虑在Javascript中使用硬编码的相对路径,这样您就不需要将路径从服务器发送到客户端了:
...
$.ajax({
type: "POST",
url: "home.php",
data: dataString,
cache: false
});
....
但是,如果这是一个经常更改的URL并且它确实需要可配置,那么您可以将PHP变量作为脚本回显“
<html>
...
<script src="thejsfile.js" type="text/javascript">
<script type="text/javascript">
// 'path' is a variable that is defined in thejsfile.js
path = '<?php echo htmlentities($path) ?>';
</script>
...
每当您从服务器向客户端输出信息时(特别是作为Javascript),您必须非常小心它被转义以防止脚本攻击(即允许人们将JavaScript注入您的代码)。在这种情况下,没有理由允许任何类型的html字符。
答案 5 :(得分:0)
使用外部JS文件时您可以将值存储在隐藏字段中,并使用JavaScript检索字段值。
<input type="hidden" name="path" id="path" value="<?php echo $path; ?>" />
并在javascript(我将使用jquery)
var path = $('#path').attr('value');
显然,您可以将变量写入页面上的脚本标记,但如果使用任何高级类型的模式,则可能很难访问该变量。
答案 6 :(得分:0)
echo "<script type='text/javascript'>var AccomodationInfoForm4 =".$path."</script>";
尝试回应上面显示的方式,您可以随时随地访问您的变量。因为这将全局提供给您网页上的所有js
文件。