1

I would like to log the result of calling a method on a object.

The current script log the result of the function in the property token literally I mean the result is the defined function.

What am I doing wrong here? Many thanks!

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

我认为你有两个问题。

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 回答