代码之家  ›  专栏  ›  技术社区  ›  GregH

在JavaScript(.js)文件中包含PHP

  •  39
  • GregH  · 技术社区  · 14 年前

    我有一个JavaScript文件(扩展名 .js .html

    我想调用一个PHP文件中的一个PHP函数,该文件只包含一个JavaScript函数中的几个PHP函数。

    • 有可能吗?
    • .php 文件中包含PHP函数 js先生 文件?
    • 我该怎么做?
      例如,假设我有一个名为myLib.php的文件,其中包含一个名为 myFunc param1 param2 ). 然后我有一个 js先生 myJsFunc . 一个电话怎么打 (PHP)从 myJsFunc公司 (JavaScript函数)?我不需要在 js先生
    10 回复  |  直到 11 年前
        1
  •  59
  •   sgrif    8 年前

    7年后更新:这是一个糟糕的建议。请不要这样做。

    如果您只需要将变量从PHP传递到javascript,那么可以首先使用javascript在PHP/html文件中创建一个标记。

    <script type="text/javascript">
        phpVars = new Array();
        <?php foreach($vars as $var) {
            echo 'phpVars.push("' . $var . '");';
        };
        ?>
    </script>
    <script type="text/javascript" src="yourScriptThatUsesPHPVars.js"></script>
    

    如果你想调用函数,那么你可以这样做

    <script type="text/javascript" src="YourFunctions.js"></script>
    <script type="text/javascript">
        functionOne(<?php echo implode(', ', $arrayWithVars); ?>);
        functionTwo(<?php echo $moreVars; ?>, <?php echo $evenMoreVars; ?>);
    </script>
    
        2
  •  25
  •   shawty    10 年前
    AddType application/x-httpd-php .js
    
    AddHandler x-httpd-php5 .js
    
    <FilesMatch "\.(js|php)$">
    SetHandler application/x-httpd-php
    </FilesMatch>
    

    在.htaccess文件中添加上述代码,并在js文件中运行php

    危险:

    如果您必须使用PHP来生成JavaScript文件,那么请使用纯PHP来生成整个JS文件。您可以通过使用normal.PHP文件来实现这一点,方法与通常输出html的方法完全相同,不同之处在于使用PHP的header函数设置正确的头,以便将正确的mime类型返回到浏览器。JS的mime类型通常为“ "

        3
  •  10
  •   NikiC    14 年前

    AJAX 请求JavaScript并发送 JSON 使用PHP响应。

        4
  •  9
  •   Scot Bernard    11 年前

    在Blorgbeard one的基础上稍加修改的版本,用于将可轻松引用的关联php数组转换为javascript对象文本:

    首先定义一个数组,其中包含要用于javascript文件的值:

    <?php
    $phpToJsVars = [
      'value1' => 'foo1',
      'value2' => 'foo2'    
    ];
    ?>
    

    现在将php数组值写入javascript对象文本:

    <script type="text/javascript">
    var phpVars = { 
    <?php 
      foreach ($phpToJsVars as $key => $value) {
        echo '  ' . $key . ': ' . '"' . $value . '",' . "\n";  
      }
    ?>
    };
    </script>
    

    Javascript文件(*.js)

    现在,我们可以使用以下符号从任何其他.js文件访问javscript对象文本:

    phpVars["value1"]
    phpVars["value2"]
    
        5
  •  6
  •   Josiah    14 年前

    这有点棘手,因为PHP在服务器端得到评估,javascript在客户端得到评估。

        6
  •  4
  •   DEVPROCB    10 年前

    实际上,实现这一点的最佳方法是在.php中编写javascript,并在单独的文件中使用jquery来使用jquery get脚本文件或jquery load在javascript所在的文档中使用php include函数。本质上这就是它的样子。

    静态Js文件-使用 http://api.jquery.com/jquery.getscript/ http://api.jquery.com/load/

    在主html页面中,将静态文件作为常规js文件调用。调用静态js文件将强制从服务器加载动态数据。

    一些file.php 1:

    <?php
    $somevar = "Some Dynamic Data";
    ?>
    
    $('input').val(<?php echo $somevar?>);
    

    或者简单地呼应脚本,例如

    echo "$('input').val(".$somevar.");";
    

    文件2:somejsfile.js:

    $("#result").load( "file.php" );
    

    <script src="somejsfile.js"></script>
    

    我相信这回答了许多希望混合php和javascript的人的问题。最好是在后台处理数据,然后让用户延迟等待数据。您也可以绕过第二个文件,只需在主html页面上使用php的include,就可以在主页面上公开javascript。表现取决于你,以及你想如何处理所有这些。

        7
  •  1
  •   Cristian Sanchez    14 年前

    不能在客户端javascript中包含服务器端PHP,必须将其移植到javascript。如果你愿意,你可以用 php.js ,将所有PHP函数移植到javascript。您还可以创建一个新的php文件,返回调用php函数的结果,然后使用AJAX调用该文件以获得结果。

        8
  •  1
  •   Paul Dixon    14 年前

    因为Javascript在浏览器、客户端和服务器端执行,所以您需要的是 AJAX

        9
  •  1
  •   barbocc    8 年前

    “filename.php.js”。 PHP在这个文件中生成JS。 我从DB得到了所有参数。 这在xampp上对我有用。

        10
  •  1
  •   Himanshu    7 年前

    php 归档到 js .

    有一件事你可以 define 您的php文件数据 javascript global variable

    <?php
    $abc = "Abc";
    $number = 052;
    $mydata = array("val1","val2","val3");
    ?>
    <script type="text/javascript">
    var abc = '<?php echo $abc?>';
    var number = '<?php echo $number ?>';
    var mydata = <?php echo json_encode($mydata); ?>;
    </script>
    

    之后 use 它直接在你的 js file 你想用的地方。

    abc.js公司

    function test(){
       alert('Print php variable : '+ abc +', '+number); 
    }
    
    function printArrVar(){
      alert('print php array variable : '+ JSON.stringify(mydata)); 
    }
    

    此外,如果您有任何不想公开显示的关键数据,那么您可以使用js加密数据。也可以从js得到它的原值,所以没人能得到它的原值。如果他们公开露面。

    这是将php脚本数据调用到js文件中的标准方法,而无需将js包含到php代码中或将php脚本包含到js中。

        11
  •  0
  •   taur    4 年前

    使用重写来执行1文件异常,而不是搞乱通用php处理程序:

    将.js文件重命名为.php并重写请求,使其响应.js请求。如果文件是由apache提供的;加载项访问:

    RewriteEngine on
    RewriteRule myjsfile\.js myjsfile.php [L]
    

    <?php header('Content-Type: application/javascript'); ?>
    

    等等,现在可以在“.js”文件中使用php标记了。