jQuery - *variable*未定义

mar*_*n87 0 jquery scope facebook-javascript-sdk

我想知道是否有人可以帮助解决我遇到的这个问题.

我整个上午都在尝试使用Facebook共享按钮来处理当时正在页面上播放的视频所特有的动态参数.

我认为以下应该可以工作,但我收到错误:share_title未定义.

然后我尝试将div的内容设置为ajax响应的内容,然后将params变量设置为该div的内容,以便变量可以在FB.ui函数内访问,但似乎也不起作用.

有没有人有任何想法?

$('.share_button').live('click', function(e){
    $('#player').fadeOut('slow');
    var share_id = $(this).attr('id');

    $.ajax({
        type: 'GET',
        url: '/youtube.php',
        data: 'share='+ share_id,
        success: function(data) {
            //$('#params').html(data);
            //params = $('#params').html();
            param = data.split('--');
            share_title = param[0];
            share_description = param[1];
            share_picture = param[2];
            share_views = param[3];
        }
    });
    e.preventDefault();
    FB.ui(
    {       
        method: 'feed',
        name: share_title,
        link: 'http://www.facebook.com',
        picture: share_picture,
        caption: share_views,
        description: share_description
    },
    function(response) {
        $('#player').show('slow');     
    });
});
Run Code Online (Sandbox Code Playgroud)

Ale*_*hev 5

$.ajax调用是异步的.您应该FB.uisuccess回调中进行调用,该回调在AJAX请求成功时调用:

$.ajax({
    type: 'GET',
    url: '/youtube.php',
    data: 'share='+ share_id,
    success: function(data) {
        param = data.split('--');
        share_title = param[0];
        share_description = param[1];
        share_picture = param[2];
        share_views = param[3];

        FB.ui({       
            method: 'feed',
            name: share_title,
            link: 'http://www.facebook.com',
            picture: share_picture,
            caption: share_views,
            description: share_description
        },
        function(response) {
            $('#player').show('slow');     
        });
    }
});
Run Code Online (Sandbox Code Playgroud)