使用JavaScript动态填充输入

时间:2017-08-31 09:07:34

标签: javascript facebook input

我正在使用Facebook Api来获取用户的姓名,电子邮件和城市。 一切正常但填充inputs。我的script填充输入,但仅在我重新加载页面时。我需要在按login button后填写输入,而不刷新页面。这可能吗?

这是我的剧本:

<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>

1 个答案:

答案 0 :(得分:0)

luschn一样,如果我使用fb login button,则不会调用myFacebookLogin()函数。所以我做了什么,在我的按钮中将onclick更改为onlogin解决了问题。