简体   繁体   English

在Javascript文件中获取PHP变量

[英]Get PHP variable in Javascript file

I have a PHP file on my server which is counting the number of files in a directory. 我的服务器上有一个PHP文件,该文件正在计算目录中的文件数。 I would like to get the number of files ($fileCount) in my Javascript file. 我想获取我的Javascript文件中的文件数($ fileCount)。

numberOfImages.php : numberOfImages.php

<?php
$dir = "/my/directory/";
$fi = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);
$fileCount = iterator_count($fi);
echo $fileCount; 

?>

main.js (EXTERNAL JS FILE) I don't have any code to do with my php file in my JS file yet. main.js (外部JS文件)我的JS文件中没有任何与我的php文件相关的代码。 I would like to get the variable from my PHP file( http://www.website/numberOfImages.php ) and use it (alert it) in my external JS file. 我想从我的PHP文件( http://www.website/numberOfImages.php )中获取变量,并在我的外部 JS文件中使用它(警告它)。

I'm willing to use AJAX. 我愿意使用AJAX。

if your other javascript isn't from an external source you can do something like: 如果您的其他JavaScript并非来自外部,则可以执行以下操作:

<?php
$dir = "/my/directory/";
$fi = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);
$fileCount = iterator_count($fi);
?> 



<script type="text/javascript">var fileCount = "<?= $fileCount?>";</script>

<script type="text/javascript" src="main.js"></script>

    and then in the main.js use FileCount like so:

    alert("fileCount: " + fileCount);

You may adopt one of 2 Possibilities... Option Nr. 您可以采用两种可能性之一 1 : You can expose the Number of Images as a Global Variable & Use it in your main.js (that is Assuming that main.js was included in the numberOfImages.php Script. Option Nr. 2 You can use Ajax to do that too: 1 :您可以将“图像数目”公开为全局变量,并在main.js中使用它(假设main.js包含在numberOfImages.php脚本中。 选项 Nr。2您也可以使用Ajax来做到这一点:

OPTION NR. 选项NR。 1 1个

    <?php 
        //FILE =>numberOfImages.php:

        $dir = "/my/directory/";
        $fi = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);
        $fileCount = iterator_count($fi);

        // EXPOSE THIS VARIABLE TO JAVASCRIPT AS A GLOBAL VARIABLE..
        //echo $fileCount; 

    ?>
        // SOMEWHERE IN THE SAME FILE: numberOfImages.php:
        <script type="text/javascript">
            var _NUM_IMAGES = "<?php echo $fileCount; ?>"; 
        </script>

Now, you can access the Number of Images in the main.js by simply referencing the variable _NUM_IMAGES . 现在,您只需引用变量_NUM_IMAGES即可访问main.js中的图像数。 So doing alert(__NUM_IMAGES) would work. 因此,执行警报(__NUM_IMAGES)会起作用。 However, be Sure that the main.js is included in the numberOfImages.php File 但是,请确保main.js包含在numberOfImages.php文件中

OPTION NR 2 选件NR 2

    // INSIDE YOUR HTML/PHP FILE THAT RUNS THE SHOW; IMPORT BOTH JQUERY & YOUR main.js BELOW. 
    // INCLUDE JQUERY LIBRARY: OTHERWISE THIS WON'T WORK...
    // SURE YOU CAN ALSO DO ALL THESE IN PURE JAVASCRIPT, BUT WHY RE-INVENT THE WHEEL???
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
    <script type="text/javascript" src="main.js"></script>

        //YOUR main.js COULD LOOK SOMETHING LIKE THIS:::
        jQuery.noConflict();
        (function ($) {
            $(document).ready(function(e) {
                $.ajax({
                    url: 'numberOfImages.php',     // <== POINTS TO THE VALID URL OF THE PHP FILE THAT OUTPUTS THE NUMBER OF IMAGES...
                    dataType: "HTML",
                    cache: false,
                    type: "POST",

                    //HANDLE THE SUCCESS CASE FOR THE AJAX CALL
                    success: function (data, textStatus, jqXHR) {
                        if(data){
                            alert(data);
                        }
                    },

                    //HANDLE THE FAILURE CASE FOR THE AJAX CALL
                    error: function (jqXHR, textStatus, errorThrown) {
                        console.log('The following error occured: ' + textStatus, errorThrown);
                    },

                    //HANDLE THE EVENT-COMPLETE CASE FOR THE AJAX CALL
                    complete: function (jqXHR, textStatus) {
                    }
                });
            });
        })(jQuery);

And the numberOfImages.php could look something like this. 而且numberOfImages.php可能看起来像这样。 Exactly the same way you did it: 完全相同:

        <?php

            /**
             * filename: numberOfImages.php
             */

            $dir        = "/my/directory/";
            $fi         = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);
            $fileCount  = iterator_count($fi);

            die($fileCount);

However, be informed that You need JQuery for this to work. 但是,请告知您需要使用JQuery才能使其正常工作。 You can add this to the File in which you are importing the main.js but before you import the main.js. 您可以将其添加到要导入main.js的文件中,但是要在导入main.js之前。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM