【问题标题】:Using PHP to send photo URLs to JavaScript使用 PHP 将照片 URL 发送到 JavaScript
【发布时间】:2011-04-16 22:52:15
【问题描述】:

我正在帮助我的朋友创建照片网站 oneonethousand.org。他希望从他放置在目录中的照片自动生成照片库。我没有使用 Ajax 的经验,并且认为它可能太复杂而无法用于此。

我认为最好的是使用 PHP 来识别目录中照片的 URL,并以某种方式将这些 URL 发送到 JavaScript,以便 JavaScript 可以预加载它们,然后在选择相应的照片按钮时显示它们网站。

我比较了解 PHP 和 JavaScript (JQuery),但我不太确定我需要做什么的最佳实践是什么。

重申一下:他想做的是将照片放在目录中,PHP 在该目录中搜索照片名称,并将这些 URL 传递给 JavaScript,以便它可以预加载它们。

你建议怎么做?

【问题讨论】:

  • 您可以在此处查看示例库oneonethousand.org/photographers/traviesa
  • 我不确定这里的问题是什么。你是在问做这样的事情是否是个好主意?我会说这是一种有效的方法,唯一的问题是您可能不想同时加载目录中的所有图像;您可能想要生成缩略图。

标签: php javascript


【解决方案1】:

我可能会使用 AJAX 来执行此操作,但您当然不必这样做。在浏览器加载的页面中,您可以让 PHP 打印 Javascript,如下所示:

$HTML  = '<script type="text/javascript">' . "\n";
$HTML .= 'var ImageCache = [];'            . "\n";

foreach (glob('Path/To/Images/*.jpg') as $Image))
{
    $HTML .= 'ImageCache.push("' . $Image . '");' . "\n";
}

$HTML .= 'for (var i in ImageCache) {'                 . "\n";
$HTML .= "\t" . 'var Source = ImageCache[i]; '         . "\n";
$HTML .= "\t" . 'ImageCache[i] = new Image(100, 100);' . "\n";
$HTML .= "\t" . 'ImageCache[i].src = Source;'          . "\n";
$HTML .= '}';

$HTML .= '</script>';

【讨论】:

  • 好的。教学时刻 - 我不太清楚 "$HTML .=" 的作用... $HTML 只是一个普通变量还是像使用 echo 一样?原谅我……我的PHP知识有限……我一般只是用echo做简单的事情。
  • OH... ".=" 正在将该代码添加到变量中,然后我会执行 "echo $HTML" 对吗?
  • .= 表示连接。 $HTML .= 'a';与 $HTML = $HTML 相同。 '一种';它将在现有 $HTML 字符串的末尾添加“a”。
  • 我将如何使用 Ajax 做到这一点?
  • 首先,我建议使用 Javascript 库(例如 JQuery)为您执行 AJAX 调用。当页面加载时,您将启动 AJAX 调用。被调用的 PHP 脚本将执行 globbing 并将字符串列表返回给您。处理响应的 Javascript 将执行与原始帖子相同的操作——创建一个 Image 对象数组并设置它们的源。
【解决方案2】:

您通常会使用glob 之类的函数来获取所有图像文件的列表,然后直接将指向它们的链接嵌入到页面中,或者按照您的建议使用 javascript。

类似这样的...

$files = glob("/image/dir/*.{jpg,jpeg,gif,png}", GLOB_BRACE);

$js = "var images = new Array();\n";

foreach( $files as $i => $file ) {
    $fileName = basename($file);
    $js .= "images[$i] = '$fileName';\n";
}

将 $js 作为 Javascript 添加到您的页面将为您提供图像名称列表、客户端,您可以根据需要使用它。

【讨论】:

    【解决方案3】:

    要将数据从 PHP 传输到 javascript,您可以使用 XML 或 JSON。 PHP 为两者提供函数和类。

    使用 JSON 非常简单

    有关 PHP 和 JSON 的更多详细信息,请参阅http://www.php.net/manual/en/book.json.php

    有关在 JavaScript 中解码数据的信息,请阅读此http://json.org/js.html

    编辑: 如果您在 php 中生成 javascript,您可以在 JSON 中编码一个数组并使用生成的代码来声明一个 JavaScript 数组。

    echo <<<END
    <script>
    ...
    var images = {$JSONEncodedArray};
    ...
    </script
    END;
    

    【讨论】:

      【解决方案4】:

      只需使用 PHP 动态生成 JavaScript 文件的一部分,如下所示:

      var slideshowImages = [<?php
      $files_in_folder = /* get the files somehow */;
      foreach($files_in_folder as $file) {
           echo "\"$file\",";
      }
      ?>null]; // Make sure to skip the last element
      

      你可能需要给你的 .js 文件一个 .php 扩展名,如果它实际上是一个单独的文件。

      【讨论】:

      • 我不知道我可以在 javascript 中做 php! “[”是什么意思?
      • [] 是数组的文字语法。所以["one", "two"] 等价于new Array("one", "two")
      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 2015-09-20
      • 1970-01-01
      • 2018-11-12
      • 2020-05-06
      • 1970-01-01
      • 2015-11-24
      • 2021-02-10
      相关资源
      最近更新 更多