在.js文件中使用PHP的json_encode()函数

时间:2012-06-25 11:15:58

标签: php javascript json

我在php文件中有一个数组说

<?php $authcode = array("auth"=>"jshkjashdkj");?>

现在我想在JS文件中访问这个数组,那我该怎么做呢?

在.js文件中<?php echo json_encode($authcode); ?>无效。

  

UDPATED

我的custom.js文件包含以下代码,我必须在url中使用authcode:

$('#removeimage').click(function(){


              $.ajax({
                        url:'deletefile.php?filename='+$('#filename').val()+'&make='+$('#make').val()+'&model='+$('#model').val(),
                        cache: false,
                        async: false,
            dataType: "json",
              success: function(data) {
              window.location="/upload/?authcode=97A434B1-E250-490D-8CF1-4B664AB42EED&make="+data.make+"&model="+data.model+"&imagename="+data.filename;


                        },
            error: function(data) {
                alert("Service is down");
            }
                 });
});

请注意authcode的使用情况,这就是我需要使用我的authcode数组的地方

请指导我。

4 个答案:

答案 0 :(得分:3)

你需要告诉php它应该处理.js文件。有两种方法可以做到这一点:

  1. 从file.js重命名为file.php
  2. 搞乱apache配置,使其将.js文件视为php
  3. 第一个更容易。您必须做的另一项更改是在您的html中替换对您的js文件的调用:

    <script type="text/javascript" src="somefolder/file.php"></script>
    

    编辑:将file.php脚本输出设为文件顶部的header("Content-Type: text/javascript");

答案 1 :(得分:1)

<?php $authcode = array("auth"=>"jshkjashdkj");?>
<script>
  // declare a global var, then you could access it in file.js
  var authcode = <?php echo json_encode($authcode); ?>;
</script>
<script src="file.js"></script>

答案 2 :(得分:0)

如果不使用AJAX,则无法在JS文件中访问PHP变量。

也就是说,您可以将脚本设置为返回application/javascript响应的PHP文件。

答案 3 :(得分:0)

根据您的使用情况,您有多种可能性。

  1. 您可能不会从PHP生成.js文件

    file_put_contents('somefile.js', $content);

  2. 在.js文件中允许PHP

    AddHandler application/x-httpd-php5 .js

  3. 将它放在您的布局中,并将您的数据存储在一个全局变量中,以便从其他所有js脚本中访问它。

  4. 哪种方法适合您的需求取决于您。但我通常会避免使用第二种方法。