Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FB不是由javascript定义的_Javascript_Facebook_Facebook Graph Api_Facebook Javascript Sdk - Fatal编程技术网

FB不是由javascript定义的

FB不是由javascript定义的,javascript,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我对FB JS SDK有问题 我正在尝试请求获取facebook页面节点的粉丝数 以下是我从html文件到正文的代码: <script> window.fbAsyncInit = function() { FB.init({ appId : 'your-app-id', xfbml : true, version : 'v2.5' }); }; (function(

我对FB JS SDK有问题

我正在尝试请求获取facebook页面节点的粉丝数

以下是我从html文件到正文的代码:

<script>
  window.fbAsyncInit = function() {
      FB.init({
        appId      : 'your-app-id',
        xfbml      : true,
        version    : 'v2.5'
      });
    };

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

但错误在于没有定义FB。有什么建议吗

这是正确的,您需要在JS SDK初始化后使用FB。话虽如此,您肯定不想在无限循环中调用FB.api,因此我删除了该部分:

<script>
    function init() {
        FB.api(
          '/l214.animaux',
          {"fields":"fan_count"},
          function(response) {
            alert(response.fan_count);
          }
        );
    }

    window.fbAsyncInit = function() {
      FB.init({
        appId      : 'your-app-id',
        xfbml      : true,
        version    : 'v2.5'
      });

      init();
    };

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

函数init(){
FB.api(
“/l214.animaux”,
{“字段”:“fan_count”},
功能(响应){
警报(响应、风扇计数);
}
);
}
window.fbAsyninit=函数(){
FB.init({
appId:'您的应用程序id',
xfbml:是的,
版本:“v2.5”
});
init();
};
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);

请确保从实际服务器上运行此操作,不要在浏览器中打开HTML文件,而至少没有本地服务器。

我之所以出现此错误,是因为我在一个独立的js文件中编写了init代码,因此,
FB
当然没有定义,因为它应该是
window.FB

我的代码:

class FacebookUtil {

  static init() {
    // comes from https://developers.facebook.com/docs/javascript/quickstart
    // notice FB should be window.FB
    window.fbAsyncInit = function() {
      window.FB.init({
        appId            : '...',
        autoLogAppEvents : true,
        xfbml            : true,
        version          : 'v2.10'
      });
      window.FB.AppEvents.logPageView();
    };

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

  static login() {
    window.FB.login(...)
  }

}

你应该
init
作为回调URI,或者让sue FB比init先加载。所以我必须在
fbAsyncint
函数的末尾调用
init
函数?这似乎不适合我:)看:你也不能在Javascript中做这样的无限循环,而期望ajax调用在其中工作。那是行不通的。好的,谢谢,我去看看@jfriend00你是对的,我会改变的。谢谢你的回答,现在我不知道这个错误的FB是没有定义的。但是,从未调用init函数。我跳过了你的代码,只在开始时添加了console.log in init函数,web浏览器控制台保持空白,我想JSSDK没有加载。您是在实际的Web服务器上尝试此操作,还是只是在本地浏览器中打开html文件?我使用html文件在本地打开它。当然,这不起作用。尝试使用真正的服务器(在本地主机或真正的服务器上)。您也可以将“https”添加到sdk源代码中,但我不建议这样做。现在开发人员使用localhost进行开发,仅仅在浏览器中打开一个html文件已经不再是这样了。明天我将实现一个localhost服务器
class FacebookUtil {

  static init() {
    // comes from https://developers.facebook.com/docs/javascript/quickstart
    // notice FB should be window.FB
    window.fbAsyncInit = function() {
      window.FB.init({
        appId            : '...',
        autoLogAppEvents : true,
        xfbml            : true,
        version          : 'v2.10'
      });
      window.FB.AppEvents.logPageView();
    };

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

  static login() {
    window.FB.login(...)
  }

}