0

我已经查看并将继续查看更多论坛帖子,但我还没有找到解决这个简单问题的方法。

很简单,我从服务器获取一些数据,我在我的 .php 文件中操作这些数据并创建四个变量。我的变量是(为简单起见)$v1、$v2、$v3、$v4。现在我还有一个 .js 文件,我想在其中使用这四个变量。具体来说,我想在谷歌地图标记中使用这些变量(但如果你不知道,你不必回答)但是如何我可以抓住这些变量并在我的谷歌地图标记(.js 文件)中使用它们的值吗?

4

2 回答 2

1

如果您在加载外部脚本之前在脚本标记中声明全局变量,则外部脚本中将可用。

<html>
<head>
    <script type="text/javascript">
    var v1 = <?=$v1?>,
        v2 = <?=$v2?>,
        v3 = <?=$v3?>,
        v4 = <?=$v4?>;
    </script>
    <script type="text/javascript" src="js/someExternalScript.js"></script>
</head>
<body>
    Some body
</body>
</html>

如果需要,您还可以使用脚本标记在您包含的另一个页面中定义变量,例如 javascript 外部文件。按照脚本出现在源代码中的顺序,后面的脚本将可以访问先前脚本中的全局变量(这里的全局意味着未在函数/闭包范围内定义)。例如,大多数人将 jquery 作为外部脚本包含在内,并且 jquery 之后包含的所有脚本都可以访问它。

于 2013-01-14T23:53:27.707 回答
0

你可以做两件事:

  1. 正确处理问题。
  2. 半途而废。

我将首先给出第二条指令,因为它应该让您对这两种技术之间的关系有所了解。

半个屁吧

这假设您正在编写的脚本不是基于 Ajax 的 - 只是一些标准的 generate-page-with-PHP 并包含 .js。

  1. 编写一个将生成 Javascript 内容的 php 文件:

    // /js/vars.php
    $v1 = $v2 = $v3 = $v4 = time();
    
    header("Content-type: text/javascript");
    
    echo "window.Variables = {
        v1: $v1,
        v2: $v2,
        v3: $v3,
        v4: $v4
    }";
    

    (请注意,如果变量是字符串,则应添加引号)

  2. <head>在要在其中使用变量的文件之前要求该文件。

    <script type="text/javascript src="/js/vars.php">
    
  3. 在您的 .js 文件中使用它。

    var smth = Variables.v1 + Variables.v2;
    

由于许多原因,这是一个禁忌,其中包括:

  • 由 PHP 文件生成的 JavaScript 不易维护。
  • 全局 JS 命名空间有些混乱。
  • 它不能很好地与 Ajax 配合使用。

恰当的

  1. 编写一个将生成 JSON 数据的 php 文件:

    // /js/vars.php
    $v1 = $v2 = $v3 = $v4 = time();
    
    $jsonArr = array(
    'v1'=> $v1,
    'v2'=> $v2,
    'v3'=> $v3,
    'v4'=> $v4
    );
    header("Content-type: application/json");            
    echo json_encode($jsonArr);
    
  2. 编写一些将使用 Ajax 提取数据的 JavaScript 代码。例如。使用 jQuery:

    $.getJSON('js/vars.php', function(data) {
        alert(data.v1+data.v2);
    });
    
于 2013-01-15T00:14:20.843 回答