2015-07-02 2 views
1

Я пытаюсь опубликовать несколько facebook post на странице с помощью jQuery. До сих пор я получаю успех, чтобы опубликовать первые facebook post, но не смог опубликовать другое.Несколько сообщений facebook через jquery

Что происходит?

facebook пост код вставки Ссылка

<div id="fb-root"> 
</div><script> 
(function(d, s, id) 
{ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); 
    js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3";  
    fjs.parentNode.insertBefore(js, fjs); 
} 
(document, 'script', 'facebook-jssdk')); 
</script> 
<div class="fb-post" data-href="https://www.facebook.com/ClashofClans/posts/1104473549576967:0" data-width="500"> 
<div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/ClashofClans/posts/1104473549576967:0"> 
<p>The update is finally here!!! Maintenance will start soon! Read all that&#039;s new: http://supr.cl/UpdateNotes 
</p> 
Posted by 
<a href="https://www.facebook.com/ClashofClans">Clash of Clans</a> on&nbsp; 
<a href="https://www.facebook.com/ClashofClans/post/1104473549576967:0">Wednesday, July 1, 2015</a> 
</blockquote> 
</div> 
</div> 

Когда я добавляю этот URL непосредственно DIV, он называет IFRAME, а затем полный facebook post данных связывается с DOM. Он работает очень хорошо, но в следующий раз Iframe не загружается на DOM. Сначала в консоли я обнаружил ошибку APP, т.е. Invalid App Id: Must be a number or numeric string representing the application id.. Я попытался с правильным AppId, но не получится. Ниже мой код, что я пробовал до сих пор

$("input").blur(function() 
{ 
    $('div').html($(this).val()); 
    //$(this).val() is facebook post URL shown above 
}) 

Кто-нибудь предложит мне правильный способ сделать это?

+0

Непонятно, что вы просите, соответственно. где лежит настоящая проблема. Вы не помещаете код, который встраивает и инициализирует JS SDK несколько раз на одной странице, верно? – CBroe

+0

, пожалуйста, проверьте этот демонстрационный url, который я создал http://dothejob.in/fb.php –

+2

Вы должны вставлять JS SDK один раз, а не каждый раз. И он проверяет документ только для элементов, которые будут отображаться в социальных плагинах после инициализации; если вы хотите, чтобы после этого нужно было разбирать дополнительные элементы, вам нужно вызвать 'FB.XFBML.parse'. – CBroe

ответ

0

Используйте следующий код. Он влияет на загрузку кода. Ответ был создан с использованием этого источника Working with asynchronously loaded javascript Вы можете обернуть вызов getLoginStatus в цикле, если хотите.

<!DOCTYPE HTML> 
<html> 
    <head> 
     <title></title> 
     <script src="jquery-1.11.1.min.js"></script> 
    </head> 
    <body> 
     <input type="text" id="message" /> 
     <input type="button" id="send" value="Send" /> 
    <script> 
     $(document).ready(function(){ 
      function facebookReady() { 
       FB.init({ 
        appId  : '1521775134725984', 
        xfbml  : true, 
        status : true, 
        cookie  : true, 
        version : 'v2.1' 
       }); 
       $(document).trigger("facebook:ready"); 
      } 

      if(window.FB) { 
       facebookReady(); 
      } else { 
       window.fbAsyncInit = facebookReady; 
      } 
     }); 

     $(document).on("facebook:ready", function() { 

      $("#send").on("click", function() { 
       FB.getLoginStatus(function(response) { 
        if (response.status === 'connected') { 
         var body = $("#message").val(); 
         FB.api('/me/feed', 'post', { message: body }, function(response) { 
          if (!response || response.error) { 
           alert('Error occured'); 
          } else { 
           alert('Post ID: ' + response.id); 
          } 
         }); 
        } 
        else { 
         FB.login(function(){ 
         }, {scope: 'publish_actions'}); 
        } 
       }); 
      }); 
     }); 

    (function(d, s, id){ 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 
    </body> 
</html> 
Смежные вопросы