1

オブジェクトのメソッドを呼び出した結果をログに記録したいと思います。

現在のスクリプトは、関数の結果をtoken文字通りプロパティに記録します。つまり、結果は定義された関数です。

私はここで何が間違っているのですか?どうもありがとう!

   $(document).ready(function () {

        // General Settings
        var 
        ApiSettings = {
            clientId: 'aaa',
            clientSecret: 'bbb',
            token: function () {
                var token;
                $.getJSON(ApiSettings.uriGetToken, processData);
                function processData(data) {
                    token = data.access_token;
                }
                return token;
            }
        }
        ApiSettings.uriGetToken = 'https://ccc.com/oauth/token?grant_type=client_credentials&client_id=' + encodeURIComponent(ApiSettings.clientId) + '&client_secret=' + encodeURIComponent(ApiSettings.clientSecret);

        console.log(ApiSettings);
        console.log(ApiSettings.uriGetToken);
        var test = ApiSettings.token;

        console.log(test);



    });
4

3 に答える 3

1

あなたには2つの問題があると思います。

1)使用する前にprocessData関数を定義する必要があります。

// $.getJSON(ApiSettings.uriGetToken, processData);
// function processData(data) {
//     token = data.access_token;
// }
// Becomes:
function processData(data) {
    token = data.access_token;
}
$.getJSON(ApiSettings.uriGetToken, processData);

2)トークンメソッドを呼び出す必要があります。

// var test = ApiSettings.token;
// Becomes:
var test = ApiSettings.token(); // Note the new brackets.
于 2012-11-09T09:55:18.807 に答える
1

交換してみてください

        token: function () {
            var token;
            $.getJSON(ApiSettings.uriGetToken, processData);
            function processData(data) {
                token = data.access_token;
            }
            return token;
        }

        token: (function () {
            var token;
            $.getJSON(ApiSettings.uriGetToken, processData);
            function processData(data) {
                token = data.access_token;
            }
            return token;
        })()

関数をインラインで実行する必要があります。

または、URIをパラメーターとしてトークン関数に渡すこともできます。

       token: function (tokenURI) {
            var token;
            $.getJSON(tokenURI, processData);
            function processData(data) {
                token = data.access_token;
            }
            return token;
        }

その後、電話します

    ApiSettings.token('https://ccc.com/oauth/token?.......');
于 2012-11-09T09:56:57.937 に答える
0

準備完了セクションからコードを取り出してください。そうすれば機能します。Chromeブラウザのコンソールでテストしましたが、動作します。スコープに問題がある可能性があります。

于 2012-11-09T10:05:06.210 に答える