javascript - 通过使用 jQuery/JS 检查两种不同的命名约定来检查文件是否存在

标签 javascript jquery logic

我正在尝试为多个用户构建个人资料页面,其中包括存储在服务器上的个性化照片/项目。这些项目使用用户名进行标记/命名。用户有一个 FirstNameLastName,并且可以选择使用 PreferredName

最初,如果存在首选名称,则使用首选名称(而不是名字)对项目进行命名。 (例如:Fname:Robert;Lname:Smith;Pname:Bobby;FileName = SmithBobby.file)

不幸的是,用户现在可以将个人资料中的姓名从 PreferredName 更改回 FirstName,导致大部分个人资料查找不正确的文件(项目实际上名为 SmithBobby.file,而配置文件正在查找 SmithRobert.file。)

话虽如此,我想使用两种命名约定(FirstLast.filePreferredLast.file)检查该项目,如果两者都不存在,则应默认使用默认/通用照片。 (default.file)

下面的示例是我目前如何检查用户是否有简历和个人资料图片的文件。如果不存在 CV,则会从页面中删除该元素。如果图像不存在,则默认为 default.jpg

if (($.PageData.PreferredName == "") || ($.PageData.PreferredName == null)) {
  $("#Name").text($.PageData.FirstName + " " + $.PageData.LastName);
  document.title = ($.PageData.FirstName + " " + $.PageData.LastName + " | Profile");
  $("#BioPageTitle").text($.PageData.FirstName + " " + $.PageData.LastName);
} else {
  $("#Name").text($.PageData.PreferredName + " " + $.PageData.LastName);
  document.title = ($.PageData.PreferredName + " " + $.PageData.LastName + " | Profile");
  $("#BioPageTitle").text($.PageData.PreferredName + " " + $.PageData.LastName);
}

//FILENAME BUILD
var file_name = ($.PageData.LastName + $.PageData.FirstName);
var second_fname = ($.PageData.LastName + $.PageData.PreferredName);

file_name = file_name.replace(/[^0-9a-z]/gi, '');
second_fname = second_fname.replace(/[^0-9a-z]/gi, '');

var vita = $('#Vita');
var vita_url = "vita/" + file_name + ".pdf";
var second_vitaURL = "vita/" + second_fname + ".pdf";

var VitaLink = $("<a>").attr({
  href: vita_url,
  target: '_blank'
}).html("<strong>Curriculum Vitae</strong>");
$.get(vita_url)
  .done(function() {
    vita.html(VitaLink);
  }).fail(function() {

    vita.remove();

  });

/*PHOTO BUILD/CHECK */
//PROFILE PICTURE
var img = $('#ProfilePicture');
var default_url = "photos/default.jpg";
var img_url = "photos/" + file_name + ".jpg";
img.error(function() {
  $(this).attr('src', default_url);
});
img.attr('src', img_url);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

如果第一个链接失败,您应该能够通过检查第二个链接来扩展当前检查第一个链接的功能。如果第二个也失败,那么您可以删除该条目。

$.get(vita_url)
  .done(function() {
    vita.html(VitaLink);
  }).fail(function() {
    $.get(second_vitaURL)
      .done(function() {
        //modify the VitaLink with the correct url, if this doesn't work make a separate vitaLink type variable
        VitaLink.attr('href', second_vitaURL);
        vita.html(VitaLink);
      }).fail(function() {
        vita.remove();
      });
  });

关于javascript - 通过使用 jQuery/JS 检查两种不同的命名约定来检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295266/

相关文章:

javascript - 将可编辑添加到 Bootstrap 表

jquery - Css 过渡不平滑 - 折叠、展开菜单

java - 仅使用一个循环将数组分为 2 个相等的部分,需要替代方法

javascript - 如何使用下划线 POST JSON 属性?

javascript - 当窗口聚焦时自动滚动播放视频

javascript - 如何将 ng-repeat 值或 ID 传递给我的附加元素?这可能吗?

javascript - 在 jquery 中更改列表切换

javascript - 如何在没有 if else、switch 或 javascript 中的内置函数的情况下实现逻辑

python - 检查坐标是否在矩形内

javascript - 错误 : Invalid value for argument 4. 属性 'method':意外的属性