1

次のコードで JavaScript エラーが発生します。私が得ているエラーは「Uncaught ReferenceError: FB is not defined. postToFeed (anonymous function)」です。誰かがこれで私を助けることができますか? 前もって感謝します。

window.fbAsyncInit = function() {
        FB.init({
            appId      : '<?= APP_ID ?>', // App ID
            channelUrl : '.....', // Channel File
            status     : true, // check login status
            cookie     : true, // enable cookies to allow the server to access the session
            xfbml      : true  // parse XFBML
        });

        // Additional initialization code here
    };

    // Load the SDK Asynchronously
    (function(d){
        var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        ref.parentNode.insertBefore(js, ref);
    }(document));

    function postToFeed() {
        var obj = {
            method: 'feed',
            link: '<?= REDIRECT_URL ?>',
            picture: '<?= SHARE_IMAGE ?>',
            name: unescape('<?= SHARE_TITLE ?>'),
            caption: unescape('<?= SHARE_CAPTION ?>'),
            description: unescape('<?= SHARE_DESCRIPTION ?>')
        };

        function callback(response) {
            console.log(response);
            //alert("Message posted to your wall, thanks!");
            if (response && response.post_id) {
                alert('Success');
                window.location="page.php";
            }       else {
                alert('Fail.');
            }
        }
        FB.ui(obj, callback);
    }

    function sendToFriend() {
        var obj = {
            method: 'send',
            link: '<?= REDIRECT_URL ?>',
            picture: '<?= SHARE_IMAGE ?>',
            name: unescape('<?= SHARE_TITLE ?>'),
            caption: unescape('<?= SHARE_CAPTION ?>'),
            description: unescape('<?= SHARE_DESCRIPTION ?>')
        };

        function callback(response) {
            console.log(response);

            //alert("Message sent to your friend(s), thanks!");
            if (response && response.post_id) {
                alert("Success!");
                window.location="page.php";
            } else {
                alert('Fail.');
            }
        }

        FB.ui(obj, callback);
    }
4

1 に答える 1

0

あなたの2番目の問題について(コメントから)
Sendメソッドは応答でpost_idを返さないため、正常に投稿された後でもelseブロックに入ります。コンソールで応答を確認してください。返されるのは success パラメータのみですsuccess : true

あなたの最初の問題について
は、呼び出しpostToFeed()が速すぎます。つまり、Facebook SDK がまだロードされています。同じものを呼び出してみてくださいwindow.onload

于 2013-06-25T07:01:38.153 に答える