jQuery永远不会返回 - 回调函数永远不会触发

时间:2017-03-12 20:41:58

标签: javascript jquery node.js

我之前在stackoverflow上发布了这个问题,但我已经简化了它,因此它可以更容易理解和回答:这是一个非常糟糕的举动,因为我的答案完全不够。

我尝试使用NodeJS编写Discord Javascript bot。这个机器人的目的是使用他们的OAuth2 client_id / client_secret身份验证方法从DeviantArt中获取内容。

我的问题是,一旦发送了jQuery请求,它就永远不会返回,并且永远不会调用回调函数:所以我不知道是什么失败了因为" status" var保持空白。

var jsdom = require("jsdom").jsdom;
var doc = jsdom();
var window = doc.defaultView;
var $ = require('jquery')(window);

var jsonFinal = '';
var token_url = 'https://www.deviantart.com/oauth2/token';
$.get( token_url, { grant_type: 'client_credentials', client_id: 5946, client_secret: 'whatever'} ).done(function( data ) {
        jsonFinal = "("+data.status+data.error+")\n"+data;
        console.log(jsonFinal);
    });

(我在nodeJS 6上使用jsdom和jquery)

我遵循了DA API文档,我非常确定这些是发送到他们服务器的正确值,并且这是发送它们的正确方法。

但是,此代码中的console.log()永远不会被触发。

怎么样?为什么?

1 个答案:

答案 0 :(得分:0)

你的问题可能是你不应该在你的完成函数中将函数作为参数。但是为了防止出现其他问题,请尝试以下方法:

var jsdom = require("jsdom").jsdom;
var doc = jsdom();
var window = doc.defaultView;
var $ = require('jquery')(window);

var jsonFinal = '';
var token_url = 'https://www.deviantart.com/oauth2/token';
$.get( token_url, {
    grant_type: 'client_credentials',
    client_id: 5946, 
    client_secret: 'whatever'
})
.done(function(data) {
    console.log(data);
    jsonFinal = "("+data.status+data.error+")\n"+data;
    console.log(jsonFinal);
})
.fail(function(error) {
    console.log(error);
})
.always(function() {
    console.log("done");
});