【问题标题】:jQuery never returns - callback function never firesjQuery 永远不会返回 - 回调函数永远不会触发
【发布时间】:2017-03-13 04:54:13
【问题描述】:

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

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

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

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() 从未被触发。

怎么样?为什么?

【问题讨论】:

  • 添加fail(function( jqXHR, textStatus, errorThrown ) {})回调来检查错误。

标签: javascript jquery node.js


【解决方案1】:

您的问题可能是您不应该将函数作为参数放在完成的函数中。但以防万一还有其他问题试试这个:

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");
});

【讨论】:

  • 好的,这样会好一点。这是我现在得到的:i.imgur.com/ZRKVbPY.jpg
  • 是的!结果!您的连接有错误。所以你的脚本实际上运行良好,但服务器上可能有问题。您的身份验证设置是否正确?什么是状态码? (error.statusCode()) 响应头是什么? (error.getResponseHeader())
猜你喜欢
  • 2014-07-20
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 2017-07-13
  • 2015-11-27
  • 2019-11-15
相关资源
最近更新 更多