2012-03-30 10 views
0

Ref: Loading gravatar using jqueryGravatar Javascript mehrere E-Mails

ich das obige Verfahren bin mit dem Gravatar auf einer Seite zu generieren aber ich mehr E-Mails auf der Seite und den Code habe nur ein MD5 zu erzeugen und daher nur ein Gravatar meiner JS ist: Crypto MD5

var email = $('#email').val(); 
var digestString = Crypto.MD5(email); 
$('#md5').val(digestString); 
var gravatar = $('<img>').attr({src: 'http://www.gravatar.com/avatar/' + digestString}); 
$('.gravatar').append(gravatar); 

ich verwende http://code.google.com/p/crypto-js/ und dass im Header geladen die E-Mails in einem versteckten Eingang gehalten werden:

<input type="hidden" id="email" value="<?php echo $message['contact_email'];?>"> 

Diese Ausdrucke sind für jeden Benutzer OK.

<div class="message-author"> 
<span class="gravatar" style="height: 24px;"> 
     <img src="http://www.gravatar.com/avatar/82c9a9c254f35a912d8fefc248c30fd8"></span> 
     <input type="hidden" id="md5" value="82c9a9c254f35a912d8fefc248c30fd8"> 
     <input type="hidden" class="email" value="[email protected]"> 
</div> 

HTML Ausgabe erfolgt nicht:

<div class="message-author"> 
<span class="gravatar" style="height: 24px;"> 
     <img src="http://www.gravatar.com/avatar/82c9a9c254f35a912d8fefc248c30fd8"></span> 
     <input type="hidden" id="md5" value=""> 
     <input type="hidden" class="email" value="[email protected]"> 
</div> 

PHP

Jede Hilfe wäre

EDIT *****

HTML-Ausgabe Arbeits groß sein

<?php foreach ($messages['page'] as $message): ?> 
    <li class="message"> 
     <div class="message-body"><?php echo $message['message']; ?></div> 
     <div class="message-author"> 
      <span class="gravatar" style="height: 24px;"></span> 
      <input type="hidden" class="md5" value=""> 
      <input type="hidden" class="email" value="<?php echo $message['contact_email'];?>"> 
      <?php echo $message['contact_person'];?> - 
      <?php echo date("m M - g:i a", $message['created']); ?> 
     </div> 
    </li> 
<?php endforeach; ?> 
+0

Können wir gesehen, die HTML, um zu sehen, wie das '.gravatar' Element relativ zu jedem' 'hält die E-Mail? habe PHP zur Verfügung, warum tust du das nicht in PHP? Es scheint auch *, dass du dieselbe ID für mehrere Elemente auf derselben Seite verwendest. .. das ist ungültig. IDs müssen eindeutig sein ... versuchen Sie stattdessen, eine Klasse zu verwenden. – Matt

+1

@Matt hinzugefügt wie gewünscht Javascript wirklich verwenden möchten, wenn möglich, danke für Ihre Hilfe die weit –

+1

Warum generieren Sie nicht alle MD5-Hashes und Bilder und Sachen von PHP? –

Antwort

1

Versuchen Sie Folgendes:

$('input.email').each(function() { 
    var self = $(this); 
    var md5 = Crypto.MD5(this.value); 

    self.siblings('.md5').val(md5); 
    self.siblings('.gravatar').append($('<img />').prop('src', 'http://www.gravatar.com/avatar/' + md5)); 
}); 

Sie benötigen eine Schleife (via each()) einzuführen individuell jedes email Element zu konsultieren; wie Sie sonst realisiert, nur die erste auf (als Getter angesehen wird wie val() den Wert des ersten verglichene Element nur zurück.

Aber, wie ich bei in my comment angedeutet, sollte diese wirklich ein Job für PHP sein, es ist auch ein potenzielles Datenschutzproblem Senden von Benutzern E-Mails in Ihrem HTML