2017-08-31 111 views
0

我使用Facebook Api,獲取用戶的名字,電子郵件和城市。 一切正常,但填寫inputs。我的script填充輸入,但只有當我重新加載頁面。在按下login button後,我需要填寫輸入,而不刷新頁面。那可能嗎?使用JavaScript動態填充輸入

這是我的腳本:

<script> 
function getUserData() { 
     FB.api('/me?fields=first_name,last_name,email,location', function(response) { 
       var imie = document.getElementById('basketInputName'); 
       if(!imie || !imie.value) 
        imie.value = response.first_name; 
       var nazwisko = document.getElementById('basketInputLastName'); 
        if(!nazwisko || !nazwisko.value) 
         nazwisko.value = response.last_name; 
       var email = document.getElementById('basketInputMail'); 
        if(!email || !email.value) 
         email.value = response.email; 
       var location = document.getElementById('inputCityTo'); 
        if(!location || !location.value) 
         location.value = response.location.name; 
     }); 
} 
    window.fbAsyncInit = function() { 


FB.init({ 
    appId   : '134824563795810', 
    autoLogAppEvents : true, 
    xfbml   : true, 
    version   : 'v2.10' 
}); 
FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
       //user is authorized 
       document.getElementById('loginBtn').style.display = 'none'; 
       getUserData(); 
     } else { 
       document.getElementById('logoutBtn').style.display = 'none'; 
     } 
}); 
    }; 

    (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')); 

    function myFacebookLogin() { 
FB.login(function(){ 
    getUserData(); 
}, {scope: 'user_location'}); 
} 

</script> 

這是例如input第一個名字:

<div class="form-group"> 
    <label for="basketInputName">Imię</label> 
    <input type="text" name="client[name]" class="form-control" id="basketInputName" required> 
</div> 

任何建議我做錯了嗎?

編輯:

這是我的登錄/註銷按鈕:

<fb:login-button id="loginBtn" show-faces="false" height="200" width="200" max-rows="1" scope="email,user_location,public_profile" onclick="myFacebookLogin();">Kontynuuj przez facebook</fb:login-button> 
<fb:login-button id="logoutBtn" autologoutlink="true"></fb:login-button> 
+0

你能告訴我們你登錄按鈕的代碼嗎? – UncleDave

+1

要麼使用登錄按鈕或fb.login ... myFacebookLogin很可能不會被調用,您登錄後沒有使用任何回調。 – luschn

+0

閱讀此:http://www.devils-heaven.com/facebook-javascript-sdk-login/ – luschn

回答

0

luschn說,如果我用fb login button,然後myFacebookLogin()函數沒有被調用。所以我做了什麼,在我的按鈕中更改onclickonlogin解決了問題。