douganbi7686 2015-08-11 05:29
浏览 197
已采纳

html / javascript / php:我如何使用“全局变量”?

so my domain name is going to change from building it on my computer (localhost) to what my domain name will be when i actually deploy it, and I don't want to go back and have to change it in a million places. Now i know I could do a superglobal variable in php

<?php echo $GLOBALS['domain_name']; ?>

but as far as I know you can't use this in separate .js files. How can I create a "global variable" for my domain name that can be used in html and js?

  • 写回答

4条回答 默认 最新

  • dongranding3909 2015-08-11 05:32
    关注

    Print in head of index file (or in php include in header tags)

    Any js file can use variables defined in same scope level above it, even if in other files.

    http://www.w3schools.com/js/js_scope.asp

    Common form is to, inside the tag and at before any other calls, to define all 'global' js variables.

    Printing php into a js file is discouraged highly for a few reasons, even though i have heard its possible, but just use a php include if you need it in multiple places:

    <html>
    <?php
      // include any shared content, in this case i include entire <head> section
      include('header.php');
    ?>
    <body>
    

    So if you have something like this at top of your php index file, or in an include you place there:

    <script>
      var baseUrl = "<?php echo $GLOBALS['domain_name']; ?>";
    </script>
    

    Then that can be used as a standard variable anywhere after that point.


    Side Note: using object wrapper

    As a side note, you could wrap it in an object and pass that object through to other files, such as:

    var AppData = {};
    AppData.domain_name = "<?php echo $GLOBALS['domain_name']; ?>";
    AppData.googleTrackerUID = "<?php echo $GLOBALS['gtrackerid']; ?>";
    AppData.whatever = true;
    
    fnct_from_earlier_point_or_elsewhere(AppData);
    

    Thats only really of use if you think you may need to pass any other settings through, or just want to build for that possibility (especially if optional param, as easy to make reusable function that handles if an index doesnt exist)

    I prefer the object approach, but dont overcomplicate if not needed.


    EDIT

    As @Amadan commented, it would even be easier to create the $AppData array/object in php then just call this:

    var AppData = <?php echo json_encode($AppData); ?>;
    

    Also, regarding someone posting to omit the 'var' keyword, its usually bad form as var doesnt stop it being global, and some issues with certain browsers (IE)

    javascript var or not var, what's the difference?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献