我可以在js文件中显示php echo吗?

时间:2013-06-26 18:39:32

标签: php javascript

我有一个.js文件,它有一个很好的幻灯片放映布局,下面是一些代码:

slide_links:'false',//Individual links for each slide (Options: false, 'num', 'name', 'blank')
    slides:[{image:'images/2.jpg', title:'Image Credit: John Doe'},
            {image:'images/3.jpg', title:'Image Credit: John Doe'},
            {image:'images/4.jpg', title:'Image Credit: John Doe'},  
            {image:'images/5.jpg', title:'Image Credit: John Doe'},
            {image:'images/6.jpg', title:'Image Credit: John Doe'}] 
});

});

我想知道我可以用一行像这样的一行来代替'images / 2.jpg'中的一行来展示一组图像吗?

4 个答案:

答案 0 :(得分:3)

可能的解决方法:

  • 使用htaccess规则在JS文件中运行PHP,如下所示:

    AddType application/x-httpd-php .js    
    AddHandler x-httpd-php5 .js
    
    <FilesMatch "\.(js|php)$">
    SetHandler application/x-httpd-php
    </FilesMatch>
    
  • 使脚本内联到一些php文件

  • 通过PHP中的内联元素将数据放入变量中,并让外部静态.js文件将其拾取。
  • 将文件另存为.php而不是.js和:

在您的PHP文件中:

Header("content-type: application/javascript");

然后将您的文件链接为:

<script type="text/javascript" src="youfile.php"></script>

答案 1 :(得分:1)

你可以通过以下方式做到:

  1. 执行生成js脚本的php脚本
  2. 进行ajax调用以获取您要在js上使用的信息

答案 2 :(得分:1)

您确实可以,但您必须将文件命名为.php。

然后,您可以运行代码并使用Content-type将输出更改为JavaScript。

header('Content-type: text/javascript');

答案 3 :(得分:1)

嗯,Javascript只是在浏览器读取之前的文本。 PHP可以打印文本,所以答案是肯定的。但问题很大程度上取决于你可以修改的内容。如果您在JS文件中定义幻灯片,如此处所示,它可能会更加分散。但是,如果您只是在JS文件中定义幻灯片代码,并在内联脚本中声明“幻灯片”对象,那么PHP就更容易更改它。这不是你问的问题,但它只是一个可能的设计建议,可能会更清洁。一个非特定的例子,告诉你如何做到这一点:

<script src="lib_slideshow.js"></script>
<script type="text/javascript">
    var slides = [{image:'images/2.jpg', title:'Image Credit: John Doe'},
    <?php
        echo "{image:'images/customPHPDeterminedImage.jpg', title: 'Image Credit: PHP'},";
    ?>
            {image:'images/3.jpg', title:'Image Credit: John Doe'},
            {image:'images/4.jpg', title:'Image Credit: John Doe'},  
            {image:'images/5.jpg', title:'Image Credit: John Doe'},
            {image:'images/6.jpg', title:'Image Credit: John Doe'}];
    libSlideshow.setup(slides);
</script>

可能有另一种可能的方法涉及通过PHP文件重写JS,可能是通过使用.htaccess文件拦截请求,但此时我觉得它会变得混乱。