【问题标题】:problem with php: read filenames, generate javascript and htmlphp 的问题:读取文件名,生成 javascript 和 html
【发布时间】:2011-07-18 20:00:47
【问题描述】:

更新

你好。我发现自己遇到了一个新问题。 php代码在我的PC(wamp服务器)上完美运行,但我现在将它上传到免费的webhost服务器上,而php部分运行完美(它产生数组)javascript函数本身不起作用,因为没有照片在网站加载时。我试图通过在函数的第一行放置一个警报来测试它,以查看它是否运行但从未出现。我认为服务器由于某种原因没有意识到它是一个 javascript 函数,因为我在 getphotos.php 中也有这个:

window.onload = photos();

从启动照片功能开始,会显示一个文本。当我在 js 文件中移动该行并将显示文本行放在首位时,它会运行显示文本但仍然没有照片。你怎么看????

更新结束


大家好。我正在建立一个显示一些照片的网站。我希望网站通过读取照片文件夹中的文件名自动生成显示照片的 html 代码,但我还需要使用 javascript。所以我通过网络找到了一个使用 php 生成 javascript 的解决方案,它可以生成我想要的 html 代码,我认为这就是我需要的。但是......它不起作用X_X。所以我需要别人的帮助!

首先,这里是 php/javascript(在 getPhotos.php 中):

<?
header("content-type: text/javascript");

//This function gets the file names of all images in the current directory
//and ouputs them as a JavaScript array
function returnImages() {
    $pattern="(*.jpg)|(*.png)|(*.jpeg)|(*.gif)"; //valid image extensions
    $files = array();
    $curimage=0;
    if($handle = opendir('/photos/')) {
        while(false !== ($file = readdir($handle))){
            if(eregi($pattern, $file)){ //if this file is a valid image
                //Output it as a JavaScript array element
                echo 'galleryArray['.$curimage.']="'.$file .'";';
                $curimage++;
            }
        }
        closedir($handle);
    }
    return($files);
}

//here starts the javascript function
echo 'window.onload = photos;
    function photos(){
    var i;
    var text1 = "";
    var text2 = "";
    var text3 = "";
    var galleryArray=new Array();'; //Define array in JavaScript
returnImages(); //Output the array elements containing the image file names

//short the images in three sets depending on their names and produce the code
echo 'for(i=0; i<galleryArray.length; i++){
    if(galleryArray[i].indexOf("set1_")!=-1){
        text1+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }else if(galleryArray[i].indexOf("set2_")!=-1){
        text2+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }else if(galleryArray[i].indexOf("set3_")!=-1){
        text3+= "<a rel=\"gallery\" title=\"\" href=\"photos/"+galleryArray[i]+"\">\n<img alt=\"\" src=\"photos/"+galleryArray[i]+"\" />\n</a>\n" ;
    }
}';

//create text nodes and put them in the correct div
echo 'var code1 = document.createTextNode(text1);
    var code2 = document.createTextNode(text2);
    var code3 = document.createTextNode(text3);
    document.getElementById("galleryBox1").appendChild(code1);
    document.getElementById("galleryBox2").appendChild(code2);
    document.getElementById("galleryBox3").appendChild(code3);
}';

?> 

这是mane page index.html中的代码:

<script type="text/javascript" src="getPhotos.php"></script><!--get photos from dir-->

就是这样,它不起作用!我知道我只是通过提供所有代码并寻求帮助来要求很多,但我什至想不出有什么问题,更不用说如何解决它了....所以,如果你有任何想法,那就太好了。

【问题讨论】:

  • 当你说“它不起作用”时,你需要更具体一点。该页面是否产生任何输出?如果是这样,那么它在停止之前会到达哪里?如果您只看到一个空白页,则表明某处存在语法错误。
  • 您好,“不起作用”是什么意思?您的 galleryArray 是空的还是 text1、text2、text3 为空?
  • 您还可以通过包含 these lines of code 来确保 PHP 显示所有错误。
  • @strauberry 伟大的思想和一切!
  • 我想要一个答案,而不是提出赖特的问题....X_X 抱歉 =) 当我说这不是说它什么都没有产生的时候!在我在服务器上运行之后查看页面源代码,我仍然可以看到所有 php 代码(我认为我不应该看到它),因为我在上面给出了它并且没有结果。我已将带有赖特名称的照片放入文件夹中,但它没有返回任何内容。就好像它根本不运行。

标签: php javascript html file directory


【解决方案1】:

returnImages() 之后的; 丢失。

这个函数(readdir)可能返回布尔值 FALSE,但也可能返回一个 非布尔值,计算结果为 FALSE,例如 0 或“”。请阅读 更多关于布尔值的部分 信息。使用 === 运算符 测试 this 的返回值 功能。

http://php.net/manual/en/function.readdir.php

所以尝试使用while(false != ($file = readdir($handle))){while(FALSE !== ($file = readdir($handle))){

【讨论】:

  • @Michael :我编辑了我的答案。让我知道它是否对您有帮助。
  • 我改变了它,但现在它显示了一些其他错误,据我所知,它们与文件名和我说它应该寻找的扩展名有关......
【解决方案2】:

首先,您的正则表达式是错误的。您需要查看正则表达式教程,例如this one

【讨论】:

  • 感谢您的建议。我学到的任何东西都只能帮助我!
猜你喜欢
  • 2020-01-11
  • 2012-04-12
  • 2013-08-17
  • 1970-01-01
  • 2015-08-15
  • 2011-10-14
  • 1970-01-01
  • 2010-09-26
相关资源
最近更新 更多