如果使用JavaScript / jQuery在FTP上不存在该文件,是否可以隐藏链接?

时间:2018-06-19 15:49:48

标签: javascript jquery html

我希望完成的是,如果没有用于特定位置的文件,则隐藏链接,如果存在,则显示链接。

我在这里有这段html:

<p>[[C1:event_location]]
  <br />[[C1:event_location_city]], [[C1:event_location_state]], [[C1:event_location_country]]
  <br /><a href="[[C1:map_link]]">Google Map</a> 
  | <a href="../documents/2018Maps/ROUTE_MAP_[[E130:"[[E130:"[[E130:"[[E130:"[[C1:event_title]]" ". " " " replaceall]]" "/" " " replaceall]]" "." "" replaceall]]" "/" " " replaceall]].pdf" target="_blank">Route Map</a> 
  | <a href="../documents/2018Maps/ROUTE_MAP_1K_[[E130:"[[E130:"[[E130:"[[E130:"[[C1:event_title]]" ". " " " replaceall]]" "/" " " replaceall]]" "." "" replaceall]]" "/" " " replaceall]].pdf" target="_blank">1km Route Map</a> 
  | <a href="../documents/2018Maps/ROUTE_MAP_5K_[[E130:"[[E130:"[[E130:"[[E130:"[[C1:event_title]]" ". " " " replaceall]]" "/" " " replaceall]]" "." "" replaceall]]" "/" " " replaceall]].pdf" target="_blank">5km Route Map</a>
</p>

这里发生的是Luminate平台,使用它自己的自定义标签,您可以在E130C1:event_title上查看href并链接到FTP文件夹中的pdf文件名以Route_map_或Route_map_1k_或Route_map_5k_开头,并以位置名称结尾。如果存在pdf文件,然后单击链接,它将加载pdf文件,但是,如果那里没有该文件的名称,它将加载未找到的页面。

例如:

我在我的网站上,并且正在寻找Abbotsford的位置。在ftp文件夹中,我有一个名为ROUTE_MAP_1K_Abbotsford.pdf的文件,但我没有一个名为ROUTE_MAP_5K_Abbotsford.pdf的文件。

如果单击带有1k的链接,它将加载pdf文件,如果单击带有5k的链接,它将加载未找到的页面,因为pdf文件不存在。因此,由于“ 5km路线图”文件不存在,因此该元素应隐藏。

我希望这是可能的,因为有某种JS​​ / jQuery方法可以检查文件是否存在(如果它不隐藏链接的话)。

EDIT ,我在看到一些答案后才意识到问题的措辞不正确。因此,如果我将鼠标悬停在5公里的“路线图”链接上,浏览器将显示(在底部)examplewebsite.com/documents/2018Maps/ROUTE_MAP_5K_Abbotsford.pdf(即使该文件实际上并不存在),这是发生了什么,因为Luminate代码正在渲染该URL,所以如果您点击该链接会将您带到examplewebsite.com/site/PageServer?pagename=page_not_found_Run(您仍然可以浏览该网站,但不会显示真实的服务器404错误)。有没有办法检查文件是否确实存在,如果不存在则隐藏链接?

谢谢您的时间!

2 个答案:

答案 0 :(得分:1)

我相信下面的操作有点慢,因为它将对您的每一个pdf都进行ajax处理,但这可以解决问题,因为您似乎只能从客户端解决该问题,并且您只需要{{ 3}}:

$("a[href^='pdf']").each(function() {
    var $currentLink = $(this);
    $.ajax($currentLink.attr("href")).fail(function(jqXHR, textStatus, errorThrown) {
        if(jqXHR.status == 404 || errorThrown == 'Not Found') {
            $currentLink.remove();
        }
    });
});

答案 1 :(得分:1)

这是一个JS检查文件是否存在:

function UrlExists(url)
{
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}

这将检查404状态(找不到文件) 如果您希望将其构造为在文件确实存在时返回,则将状态码从404切换到200。

JQuery解决方案:

$.get(url)
    .done(function() { 
        // exists code 
    }).fail(function() { 
        // not exists code
    })

有关其他上下文,请查看: How do I check if file exists in jQuery or pure JavaScript?