2012-03-30 76 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中