2012-12-05 131 views
2

如何在外部php文件中使用echo函数在JavaScript中定义变量?如何使用PHP echo函数在JavaScript中定义变量?

我们有theconfigfile.phpthejsfile.jsthephpfile.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

你为什么要通过PHP回显路径?为什么不通过对url进行硬编码来实现,或者将路径分配给变量供以后使用? –

+0

在线php中使用ajax似乎是矛盾的,而不是最好的想法IMO。 – elclanrs

+0

因为我有很多文件,并且我想修改一个文件。 – GAD

回答

5

有几种方法可以做到这一点。

您可以将您的网络服务器配置为使用PHP处理扩展名为.js的文件,并在其中注入您的PHP。当然,这意味着你需要一种方法来真正计算你的变量,这会减慢你的常规javascript内容。

你可以简单地输出的PHP变量的JavaScript变量这样

<script type="text/javascript"> 
var path = "<?php echo $path; ?>"; 
</script> 

然后一个<script>元素中在你的AJAX访问此path变量。大多数人可能会使用第二种方法。

+1

最好!作品!感谢您的帮助。 :) – GAD

+1

请记住,如果任何其他脚本使用一个名为'path'的变量,这可能会破坏它们。 –

+0

是的,我现在将用一个新名称进行修改。 TKS! – GAD

2

在thephpfile.php,

<html> 
<head> 
<script type="text/javascript"> 
    var config = { url: '<?= $path; ?>' }; 
</script> 
<script type="text/javascript" src="thejsfile.js"></script> 
</head> 

然后你就可以用config.url在JavaScript访问它。

+0

这是一个好主意,我用这个方法: '' 但是很感谢! – GAD

+0

我试着保持你的配置单独,只是分配一个变量路径可能有其他脚本的问题。这给你一个很好的干净的对象,如果你需要扩展到。 – shapeshifter

0

您可以将值以这种方式放入由PHP处理的文件中。
PHP不处理外部JavaScript文件,因此它们按原样链接而没有任何处理。

4

您可以重命名thejsfile.jsthejsfile.php,添加以下到一开始它,它应该被解析为PHP:

<?php header("Content-type: text/javascript"); ?> 

然后像这样引用它:

<head> 
<script type="text/javascript" src="thejsfile.php"></script> 
</head> 

您的其他选择是将您的服务器设置为解析PHP的.js文件。

+0

非常感谢,这个作品! :) – GAD

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字符。

+0

是的,像这样工作! :) – GAD

0

使用外部JS文件时您可以将该值存储在隐藏字段中,并使用JavaScript检索字段值。

<input type="hidden" name="path" id="path" value="<?php echo $path; ?>" /> 

,并在JavaScript(我会使用jquery)

var path = $('#path').attr('value'); 

很明显,你可以写变量页面上的脚本标记,但如果你使用任何类型的先进模式它可能很难访问该变量。

0
echo "<script type='text/javascript'>var AccomodationInfoForm4 =".$path."</script>"; 

刚刚尝试呼应上面显示的方式,你可以在任何地方访问你的变量,你want.As这将是全球范围内提供给您的网页上所有js文件。

相关问题