2010-07-31 148 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