Jquery FBAsyncint事件侦听器未触发完整函数

Jquery FBAsyncint事件侦听器未触发完整函数,jquery,facebook,wordpress,api,facebook-graph-api,Jquery,Facebook,Wordpress,Api,Facebook Graph Api,我遇到了一个问题,fbAsyncint没有运行它应该运行的整个函数。下面是我在Asyncint调用中添加事件侦听器的地方。如果我只是尝试在document.ready上运行函数,我会收到一条错误消息,说FB未定义。不幸的是,我不得不将事件监听器添加到我正在使用的插件(WP-FB-AutoConnect)的代码中。我知道这是一种糟糕的做法,但这似乎是它操纵init调用的唯一方式。但我不确定这是否是问题所在,因为如果我添加了警报之类的内容,它就会触发。下面是我在init调用中添加事件侦听器的地方 &

我遇到了一个问题,fbAsyncint没有运行它应该运行的整个函数。下面是我在Asyncint调用中添加事件侦听器的地方。如果我只是尝试在document.ready上运行函数,我会收到一条错误消息,说FB未定义。不幸的是,我不得不将事件监听器添加到我正在使用的插件(WP-FB-AutoConnect)的代码中。我知道这是一种糟糕的做法,但这似乎是它操纵init调用的唯一方式。但我不确定这是否是问题所在,因为如果我添加了警报之类的内容,它就会触发。下面是我在init调用中添加事件侦听器的地方

<script type="text/javascript">//<!--
  window.fbAsyncInit = function()
  {
    FB.init({
        appId: '<?php echo get_option($opt_jfb_app_id); ?>',
        status: true,
        cookie: true,
        xfbml: true,
        oauth: true,
        channelUrl: '<?php echo $channelURL; ?>' 
    });
    $(document).trigger('fbload');
    <?php do_action('wpfb_add_to_asyncinit'); ?>            
  };

  (function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/<?php echo apply_filters('wpfb_output_facebook_locale', 'en_US'); ?>/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
//--></script>
//
这是我正在写的页面上的js/jquery

 function facebook_ratings() {
            console.log('from fbload');

            var fb_page_id = $('#fb-page-id').val();
            var fb_page_token = $('#fb-page-access_token').val();

            FB.api(
                "/"+fb_page_id+"/ratings",
                {
                    access_token: fb_page_token,
                },
                function (response) {
                  if (response && !response.error) {
                    /* handle the result */
                    console.log('response', response);

                    var average = 0;

                    for (var i=0; i < response.data.length; i++) {
                        average += response.data[i].rating;
                        console.log('reviewer name', response.data[i].reviewer.name);
                        console.log('reviewer id', response.data[i].reviewer.id);
                        console.log('message', response.data[i].review_text);
                        console.log('\n');
                    }
                    average = average/response.data.length;
                    console.log('average', average.toFixed(2));

                  }
                  else {
                    console.log(response.error);
                  }
                });
        };

        $(document).on('fbload', facebook_ratings());
function\u ratings(){
console.log('来自fbload');
var fb_page_id=$('#fb page id').val();
var fb_page_token=$('#fb-page-access_token').val();
FB.api(
“/”+fb\U页面\U id+“/ratings”,
{
访问令牌:fb\U页面\U令牌,
},
功能(响应){
if(response&&!response.error){
/*处理结果*/
console.log('response',response);
var平均值=0;
对于(var i=0;i
加载页面时,唯一返回的是第一个控制台日志或FB.api()之前的任何内容。另外,我确信facebook_ratings()函数可以工作,因为我可以在其他上下文中使用它。提前谢谢你


编辑:我在init调用中找到了一个添加jquery的操作。因此,现在我不必处理插件代码,但我看不到任何区别。

因为您使用的是WordPress,jQuery实现略有不同。尝试更改:

$(document).trigger('fbload');
致:


基本上,您需要将
$
替换为
jQuery
,以便jQuery正常工作。但是,只有在使用WordPress版本的jQuery时,才需要这样做。

事实证明,解决我的问题最简单的方法是必须在$(window).load(function(){}中编码。谢谢大家

您查看源代码以查看所有php变量是否正确吗?听起来好像有错误,或者没有生成响应。如果不是上述任何一项,则包含源代码会更有用。是的,我的变量是正确的。如果我通过单击事件或其他方式调用该函数,我可以使用该函数,并且它工作正常ks.所以我知道这不是问题所在。不幸的是,这没有什么区别:(
jQuery(document).trigger('fbload');