我有一个关于在我的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;
有谁知道我做错了什么?
答案 0 :(得分:2)
您正在一个完全不同的文件中创建数组!这两个变量不在同一范围内。更重要的是,Javascript文件显然不被解释为PHP(也不应该)。所以:
<?
标记,它永远不会看到。$array
中没有PHP main.js.php
变量。首先了解如何解释Javascript和PHP,请参阅Reference: Why does the PHP code in my Javascript not work?。
答案 1 :(得分:2)
由于您未使用PHP include
函数,因此您的变量位于不同的范围内。这是我知道实现你想要的最简单方法:
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;?>';