2011-04-14 14 views
12

के बाद बटन रीफ्रेश करें जैसे फेसबुक को फेसबुक-लाइकबटन को कार्यान्वित करना है जहां यूआरएल को एजेक्स अनुरोध से लिया गया है ... इसका मतलब है कि मैंने पेज लोड के बाद "href" -ट्रिब्यूट सेट किया है। दुर्भाग्यवश, इस समय यूआरएल पहले ही सेट हो चुका है, इसलिए इसे पसंद करते समय, यह वास्तविक पृष्ठ-यूआरएल यूआरएल के रूप में ले जाएगा ... क्या इस तरह के बटन को रीफ्रेश करने का कोई तरीका है?AJAX-Load

उत्तर

2

यदि आप एक्सएफबीएमएल का उपयोग कर रहे हैं, तो मुझे यूआरएल बदलने का कोई तरीका नहीं पता है। हालांकि, अगर आप एक iframe उपयोग कर रहे हैं, this code snippet काम करना चाहिए:

एचटीएमएल

<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.google.com&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true" id="theiframe"></iframe> 
<br /> 
<input id="url" /> 
<input id="btn" value="Change" type="button"> 

jQuery

$('#btn').click(function(){ 
    url = ""; 

    url += 'http://www.facebook.com/plugins/like.php?'; 
    url += 'href=' + $('#url').val() + '&amp;layout=standard&amp;'; 
    url += 'show_faces=true&amp;width=450&amp;action=like&amp;'; 
    url += 'font&amp;colorscheme=light&amp;height=80'; 

    $('#theiframe').attr({'src': url}); 
}); 
+0

THX, कि काम किया! – AlexK

0

आप FBML का उपयोग कर रहे हैं, तो आप बना सकते हैं और पार्स कर सकते हैं फ्लाई पर तत्व, विवरण के लिए यह उत्तर देखें:

How to add a Facebook "Like" button to an AJAX driven page

यदि आप iframes का उपयोग कर रहे हैं, तो आपको फिर से यूआरएल बनाने की आवश्यकता नहीं है, बस आईफ्रेम रीफ्रेश करें। यदि XFBML का उपयोग कर

$("iframe").each(function(){ 
    $(this).attr('src', $(this).attr('src')); 
}); 
2

, की तुलना में आप अपने तरह बटन कोड लपेट चाहिए, उदाहरण के लिए: उदाहरण के लिए, पृष्ठ पर सभी iframes का ताज़ा करने के लिए।

<fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like> 
एक div या अवधि, जैसे में

:

<span class="fb-like">  
    <fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like> 
</span> 

से, ajax के माध्यम से नए URL प्राप्त करने के बाद, आप विजेट की तरह पहले से उत्पन्न फेसबुक साफ़ करें, और नई अमेरिकन प्लान के साथ बदलने के लिए है: की तरह कोड

jQuery('.fb-like').html('<fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like>'); 

और की तुलना में आप फिर से बटन की तरह फेसबुक

FB.XFBML.parse(); 
प्रारंभ करने में है

अंतिम कोड इस तरह दिख सकता है। मान लें कि प्रतिक्रिया शुद्ध नया URL होता है

<span class="fb-like">  
    <fb:like send="true" width="450" show_faces="true"></fb:like> 
</span> 
<script type="text/javascript"> 
$.ajax({ 
    url: "getMeUrl.php", 
    success: function(url){ 
    $('.fb-like').html('<fb:like href="'+url+'" send="true" width="450" show_faces="true"></fb:like>'); 
    FB.XFBML.parse(); 
    } 
}); 
</script> 

सारांश:

To refresh facebook like button (or any other facebook XFBML) you have to: 
1) destroy existing initialized widget (clear the content of XFBML code wrapper) 
2) add new XFBML code into wrapper 
3) initialize new code via FB.XFBML.parse(); 
42

आप jQuery का उपयोग कर रहे हैं, तो वहाँ इस समस्या का वास्तव में आसान और चालाक समाधान:

$(document).ajaxComplete(function(){ 
    try{ 
     FB.XFBML.parse(); 
    }catch(ex){} 
});