2017-08-31 71 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解决了问题。