2012-03-30 56 views
0

编号:Loading gravatar using jquery的Gravatar的Javascript多封电子邮件

我使用上面的方法来生成页面,但是我在页面和代码在多封电子邮件上的gravatar只生成一个MD5,因此只有一个的gravatar我的JS是:

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); 

我使用MD5加密和http://code.google.com/p/crypto-js/是在电子邮件是一个隐藏的输入举行的头装:

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

这些打印出来的每个用户都可以。

任何帮助将是巨大的

编辑*****

HTML输出工作:

<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输出不工作:

<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

<?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

我们可以看到HTML,看看'.gravatar'元素相对于每个持有电子邮件的''如何定位有PHP可用,为什么你不在PHP这样做呢?它似乎*,你在同一页面上的多个元素使用相同的ID。 ..这是无效的。 ID必须是唯一的...尝试使用类来代替。 – Matt 2012-03-30 10:26:35

+1

@Matt根据要求添加如果可能,请尽可能使用javascript感谢您的帮助 – 2012-03-30 10:35:36

+1

为什么你不生成所有的MD5哈希和图像和东西的PHP? – 2012-03-30 10:43:26

回答

1

尝试以下操作:

$('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)); 
}); 

您需要引入一个循环(通过each())每个email元素单独协商;否则,当你意识到,只有第一个是看(如干将val()将只返回第一匹配元素的值。

然而,正如我在in my comment暗示,这应该真的是一个PHP的工作;它也是一个潜在的隐私问题,向用户发送电子邮件在你的HTML中