【问题标题】:Don't Display Photo if Not Found未找到时不显示照片
【发布时间】:2013-10-19 23:11:18
【问题描述】:

我正在开发一个浏览器扩展程序(内容脚本),它可以扫描并突出显示页面上的某些单词,并使用 AJAX 和 PHP 将内容回显到一个工具提示中,当用户将鼠标悬停在所述单词上时会出现该提示。从 PHP 文件回显的一件事是图像,但我的问题是我没有每个关键字的图像 - 我想要的是 PHP 仅在给定 URL 中存在图像时回显图像。截至目前,某些单词显示图像,其他单词显示“找不到图像”图标。如果图像不存在,我想要的是 no “找不到图像”图标。

我让 AJAX 将变量 ($data) 发送到我网站上托管的 PHP 文件。也许让它在回显之前检查 url 的 HTTP 标头?

这是我的代码:

$data = $_POST['id'];

回显“http://extension.nicholasrub.in/headshots/”。 $数据。 ".png'>";

【问题讨论】:

    标签: php jquery html ajax image


    【解决方案1】:

    你为什么不这样检查呢?

    $data = $_POST['id'];
    if($data !== "") {
        echo "http://extension.nicholasrub.in/headshots/" . $data . ".png'>";
    }
    
    else {
        echo "http://extension.nicholasrub.in/headshots/notFound.png'>";
    }
    

    编辑:

    使用file_exists():

    $data = $_POST['id'];
    $imagePath = "/path/images/" . $data . ".png";
    
    if (file_exists($imagePath)) {
        echo "http://extension.nicholasrub.in/headshots/" . $data . ".png'>";
    }
    
    else {
        echo "http://extension.nicholasrub.in/headshots/notFound.png'>";
    }
    

    【讨论】:

    • 这不是问题 - $data 总是有一个值(它在 PHP 文件中被多次使用)。例如,$data 可以是 N300035,并且图像存在于 extension.nicholasrub.in/N300035.png。但是,$data 也可能是 N980056,并且在 extension.nicholasrub.in/N980056.png 中不存在图像。
    • @NickRubin Pic extension.nicholasrub.in/N300035.png 没有找到我
    • @Max 这只是一个例子,抱歉。这是一个工作链接 - extension.nicholasrub.in/headshots/N00026171.png
    • file_exists() of $data? file_exists('N300035')?
    • @NickRubin 是的,您应该更改 imagePath 以更正一个,例如“/headshots”或类似的东西,实际上取决于您的 .php 文件的运行位置。但是很高兴您的问题得到了解决,也许可以发布您自己的解决方案并将其标记为正确?
    【解决方案2】:

    您可以使用此功能检查文件是否存在 http://php.net/manual/en/function.file-exists.php

    【讨论】:

      【解决方案3】:

      如果您想检查服务器上不存在的图像,请使用以下代码:

      $data = $_POST['id'];
      $imagePath = "http://extension.nicholasrub.in/headshots/$data.png";
      echo "http://extension.nicholasrub.in/headshots/".(file_get_contents(imagePath) ? $data : 'notFound').".png'>"
      

      【讨论】:

        【解决方案4】:

        我最终通过检查 HTTP 标头是否为 404 来解决问题。

        我的代码:

        $file = "http://extension.nicholasrub.in/headshots/" . $data . ".png";
        
        $file_headers = @get_headers($file);
        
        if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
            $exists = false;
        }
        else {
            $exists = true;
        }
        
        if ($exists == true) {
            echo "<div id='my-tooltip-2986234'><div><img src='http://extension.nicholasrub.in/headshots/" . $data . ".png'>";
        }
        else {
            echo "<div id='my-tooltip-2986234'><div>";
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多