2010-07-31 210 views
2

我使用下面的腳本來獲得的gravatar我的動態頁面上,需要幫助的這個腳本

<input type="text" id="email" value="{$clientemail}" style="display:none;"/> 

    $(document).ready(function(){   
       $('.p').append($.gravatar($('#email').val(), { 
       method: 'append', 
       size: '100', 
       image: '/images/1.png', 
       rating: 'r' 
      })); 
     }); 


<div class="p" style="width:100px;height:100px"> 

我使用下面的代碼從另一個頁面加載的{$clientemail}值。

$('#email').load('clientarea.php? #clientemail'); 

我的問題是.load正在採取幾秒鐘加載&所以.append正在發送空值,默認的Gravatar PIC由此而來。

我該如何克服這個問題?

感謝

+0

你是1 00%確定'#email'包含一個有效的電子郵件地址? – 2010-07-31 11:10:26

回答

3

你需要堅持追加代碼在load回調,像這樣:

$('#email').load('clientarea.php? #clientemail' function() { 
    $('.p').append($.gravatar($(this).val(), { 
      method: 'append', 
      size: '100', 
      image: '/images/1.png', 
      rating: 'r' 
     })); 
}); 

雖然,.load()到這樣一個input元素,不推薦,這將是更好地使用$.get()請求並獲取該值,如下所示:

$.get('clientarea.php?', function(data) { 
    var val = $('#clientemail', data).val(); 
    //if needed: $('#email').val(val); 
    $('.p').append($.gravatar(val, { 
      method: 'append', 
      size: '100', 
      image: '/images/1.png', 
      rating: 'r' 
     })); 
}); 
+0

謝謝尼克! $ .get()建議工作完美.. – MANnDAaR 2010-07-31 11:32:17