2017-11-14 2 views
0

Ich versuche, Profilseiten für mehrere Benutzer zu erstellen, die personalisierte photos/items enthalten, die auf einem Server gespeichert sind. Diese Artikel sind labeled/named mit dem Namen des Benutzers. Ein Benutzer hat eine FirstName & LastName, mit der Option, eine PreferredName zu verwenden.Überprüfen Sie, ob die Datei vorhanden ist, indem Sie zwei unterschiedliche Namenskonventionen mit jQuery/JS überprüfen.

Anfänglich wurden die Elemente mit PreferredName über Vorname benannt, wenn ein bevorzugter Name vorhanden war. (Ex: Fname: Robert; Lname: Smith; Pname: Bobby; FileName = SmithBobby.file)

Leider nun der Benutzer die Möglichkeit, ihren Namen von PreferredName auf ihrem Profil zu ändern, hat zurück zu FirstName, was zu einem großen Teil von Profilen für die falsche Datei zu suchen (Punkt ist SmithBobby.file tatsächlich genannt, während das Profil für SmithRobert.file sucht.)

Nachdem dies gesagt ist, würde Ich mag für das Element mit beiden Namenskonventionen (FirstLast.file & PreferredLast.file) überprüfen, wenn keine vorhanden ist, sollte es den Standard/generic Foto verwenden Standard. (default.file)

Das folgende Beispiel zeigt, wie ich derzeit überprüfe, ob der Benutzer einen Lebenslauf und Profilbild in der Datei hat. Wenn kein Lebenslauf vorhanden ist, wird das Element von der Seite entfernt. Wenn das Bild nicht existiert, wird standardmäßig default.jpg angezeigt.

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>

Antwort

1

Sie sollten Ihre aktuelle Funktion der Lage sein, zu erweitern, die durch die Überprüfung für die zweite, wenn der erste ausfällt die erste Verbindung überprüft. Wenn auch die zweite fehlschlägt, können Sie den Eintrag entfernen.

$.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(); 
     }); 
    }); 
+0

Vielen Dank, das hat perfekt funktioniert. Ich habe versucht, etwas Ähnliches zu tun, indem ich die Haupt-URL gleich der SecondURL innerhalb der Fail-Funktion gesetzt habe, aber nicht in der Lage war, sie zur Arbeit zu bringen, es war nicht vorgekommen, beide innerhalb desselben Aufrufs zu überprüfen. Vielen Dank! –

Verwandte Themen