在javascript文件中使用php var错误

时间:2013-05-23 07:56:28

标签: php javascript jquery variables

我有一个关于在我的javascript文件中使用php变量的问题。 这是我的 index.php 文件:

<body>
    <div class="container">
        <div class="row">
            <div class="span12">
                <?php
                    if(isset($_GET['appid'])) {
                        // GET appid
                        $appid = $_GET['appid'];

                        $json_url  ='http://api.url.com/api/gateway/call/1.4/getApp?appid=' . $appid;

                        $ch = curl_init($json_url);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

                        $str = curl_exec($ch);
                        curl_close($ch);

                        $data = json_decode($str);
                        $array = json_encode($data);
                    }  

                    else{

                    }    
                ?>
                <p id="errors" class="text-error"></p>
            </div>
        </div>

        <hr>

    </div> <!-- /container -->

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>

    <script src="js/vendor/bootstrap.min.js"></script>

    <script src="js/plugins.js"></script>
    <script src="js/main.js.php"></script>
</body>

如您所见,我检查是否发送了appid。当我收到它时,我从api加载数据。 在页面底部,我有一个指向我的javascript文件的链接。 (.php因为我想在我的js文件中使用php var $ array)

我的 main.js.php

$(document).ready(function() {
    var data = <?php echo $array;?>;
    alert(data);
});

但我在控制台总是出错:

  

未捕获的SyntaxError:意外的令牌&lt;

有谁知道我做错了什么?

4 个答案:

答案 0 :(得分:2)

您正在一个完全不同的文件中创建数组这两个变量不在同一范围内。更重要的是,Javascript文件显然不被解释为PHP(也不应该)。所以:

  1. Javascript抱怨<?标记,它永远不会看到。
  2. 即使你解决了这个问题,它也行不通,因为$array中没有PHP main.js.php变量。
  3. 首先了解如何解释Javascript和PHP,请参阅Reference: Why does the PHP code in my Javascript not work?

答案 1 :(得分:2)

由于您未使用PHP include函数,因此您的变量位于不同的范围内。这是我知道实现你想要的最简单方法:

  • 将您的JavaScript文件重命名为main.js
  • 由于您无法在.js文件中使用PHP,因此请在调用脚本之前声明JavaScript变量,如下所示:

    <script type="text/javascript">
        var array = '<?php echo $array ?>';
    </script>
    <script src="js/main.js"></script>
    
  • 然后,在您的main.js文件中,只需替换您发布的代码:

    $(document).ready(function() {
        var data = array;
        alert(data);
    });
    

答案 2 :(得分:1)

试试这个,

$(document).ready(function() {
    var data = '<?php echo isset($array) ? $array : 
                    json_encode(array("nothing in array data"));?>';
    // if $array not set then it should return {"0":"nothing in array data"}
    alert(data);
});

答案 3 :(得分:-2)

你忘了引用var数据的值使用这个

var data = '<?php echo $array;?>';