0

我有一个关于在我的 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 $ 数组)

我的main.js.php

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

但是我在控制台中总是出错:

未捕获的 SyntaxError:意外的令牌 <

有谁知道我做错了什么?

4

4 回答 4

2

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

  1. Javascript 抱怨<?标签,它不应该看到。
  2. 即使你解决了这个问题,它也不会起作用,$array因为main.js.php.

首先了解如何解释 Javascript 和 PHP,请参阅参考:为什么我的 Javascript 中的 PHP 代码不起作用?.

于 2013-05-23T08:21:37.600 回答
2

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

  • 将您的 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);
    });
    
于 2013-05-23T08:53:29.570 回答
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);
});
于 2013-05-23T07:59:01.897 回答
-2

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

var data = '<?php echo $array;?>';
于 2013-05-23T08:11:37.493 回答