【问题标题】:How to use PHP variable in an external Javascript如何在外部 Javascript 中使用 PHP 变量
【发布时间】:2014-02-09 01:11:22
【问题描述】:

我正在尝试在我的外部 JavaScript 中使用 PHP 中创建的数组。我有 PHP 代码,它根据通过 url 给出的用户 ID 将目录中的图像放入一个数组中,我希望能够在 javaScript 中使用这个数组,以便我可以创建照片幻灯片并根据用户 ID 更改图像.我认为这是可以实现的,因为我在网上进行了研究,但不知何故它对我不起作用。我不确定我做错了什么。

在我的 html 的头部,我有这段代码可以添加到我的外部 javaScript 中,并在 Javascript 中声明变量/数组。不确定它是否正确,我从其中一种解决方案中得到了它:

<script src="js/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">var userphoto = "<?= $galleryarray ?>";</script>
    <script type="text/javascript">var userid = "<?= $user_id ?>";</script>
    <script src="javascript.js"></script>

这是我的基本 HTML 中的 PHP 代码:

这是我的外部 JavaScript 代码:

$(文档).ready(function(){

var photodisplay = 
[
$("#photo1"),
$("#photo2"),
$("#photo3"),
$("#photo4"),
$("#photo5"),
];

var userid = "<?php echo json_encode($user_id); ?>";  // getting php variable 
var userphoto = "<?php echo json_encode(galleryarray); ?>";


// List of images for user one
/*var userphoto = new Array();
userphoto[0] = "Photos/1/1.jpg";
    userphoto[1] = "Photos/1/2.jpg";
        userphoto[2] = "Photos/1/1.jpg";
            userphoto[3] = "Photos/1/1.jpg";
                userphoto[4] = "Photos/1/1.jpg";*/

//preloading photos
function preloadingPhotos() {
for (var x=0; x<5; x++)
{
    photodisplay[x].attr("src", "Photos/" + userid + "/" + userphoto[x]);
    photodisplay[x].hide();
    console.log("preloaded photos");

}
displayPhoto();
}

function displayPhoto(){

    photodisplay[0].fadeIn(3000);
    photodisplay[0].delay(3000).fadeOut(3000, function() { //first callback func
    photodisplay[1].fadeIn(3000);
    photodisplay[1].delay(3000).fadeOut(3000, function() { //second callback func
    photodisplay[2].fadeIn(3000);
    photodisplay[2].delay(3000).fadeOut(3000, function() { //third callback func
    photodisplay[3].fadeIn(3000);
    photodisplay[3].delay(3000).fadeOut(3000, function() { // fourth callback func
    photodisplay[4].fadeIn(3000);
    photodisplay[4].delay(3000).fadeOut(3000, function() {
    setTimeout(displayPhoto(), 3000);
    });
    }); 
    });
    }); 
    });

}// end of function displayPhoto


window.onload = preloadingPhotos;
}); //end ready

PHP:

【问题讨论】:

  • 您的网络服务器不太可能配置为在将它们发送到客户端之前通过 PHP 解释器运行 javascript 文件,因此 PHP 永远不会被执行/评估。我建议最好在 javascript 中使用 AJAX 调用来获取数据,而不是编写内联 PHP。
  • 我是编码新手,对你所说的有点困惑。我认为 PHP 如果执行它会回显用户 ID 和数组。嗨,2 var galleryarray=new Array();galleryarray[0]="Lighthouse.jpg";galleryarray[1]="Koala.jpg";galleryarray[2]="1.jpg";galleryarray[3]=" 2.jpg";galleryarray[4]="Jellyfish.jpg";不知道为什么我为这个问题提供的 PHP 代码没有显示。

标签: javascript php jquery html arrays


【解决方案1】:

让您的 PHP 像这样在 &lt;script&gt; 标记内定义变量...

<script>
    var userid = "<?php echo json_encode($user_id); ?>";
    var userphoto = "<?php echo json_encode(galleryarray); ?>";
</script>

您的以下外部 javascript 文件将能够使用 userid 和 userphoto 变量,即使它们没有直接在外部文件中定义

【讨论】:

    【解决方案2】:

    在下面的代码中,userphoto 和 userid 现在是 javascript 变量。

    <script src="js/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">var userphoto = "<?= $galleryarray ?>";</script>
    <script type="text/javascript">var userid = "<?= $user_id ?>";</script>
    <script src="javascript.js"></script>
    

    PHP 代码不会在外部 javascript 文件中执行。所以当下面的行被执行时 userid 将是一个字符串,其值为 " " 作为其值,对于 userphoto 也是如此。

    var userid = "<?php echo json_encode($user_id); ?>";  // getting php variable 
    var userphoto = "<?php echo json_encode(galleryarray); ?>";
    

    将您的基本 HTML 修改为

    <script src="js/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">var userphoto = <?php echo json_encode(galleryarray); ?>;     </script>
    <script type="text/javascript">var userid = <?php echo json_encode($user_id); ?>;</script>
    <script src="javascript.js"></script>
    

    并且您可以在外部 javascript 文件中使用这些变量,前提是这些变量是在分配这些变量后加载的。因此,您无需再次在外部 javascript 中分配这些变量。

    【讨论】:

    • 非常感谢您的回复!我已经更改了我的代码,但它仍然显示损坏的图像,而不是目录中的图像。我不确定如何解决此问题或为什么它是损坏的图像。你有什么想法?谢谢!
    • 您能否提供更多详细信息或可能开始新的讨论?
    • 嗨,我已经提供了指向我以前的一篇文章的链接,该文章显示了 PHP 代码。由于某种原因,代码不会在这篇文章中显示。请参阅我对劳埃德银行的评论。谢谢:)
    【解决方案3】:

    只需将名为 javascript.js 的文件重命名为 javascript.php 并将脚本标签更改为 &lt;script src="javascript.php"&gt;&lt;/script&gt;

    更新

    您还可以使用 .htaccess 在您的 .htaccess 文件中执行以下操作,以使您的 javascript.js 保持原样:

    RewriteRule ^javascript\.js$ javascript.php 
    

    有关在这种情况下使用 .htaccess 的更多详细信息,请查看 以下问题的答案:

    Parsing PNG as PHP via htaccess works only on local server but not on webserver

    【讨论】:

    • 这是一种不好的做法——您可以通过执行类似的操作将 JS 与 PHP 混合,但使用 MIME 类型以更优雅的方式。本质上允许您在 JS 文件中编写 PHP。
    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2011-12-12
    • 2012-01-23
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多