【问题标题】:d3.request on(error) callback not triggering for 401 responsed3.request on(error) 回调未触发 401 响应
【发布时间】:2017-05-23 16:12:05
【问题描述】:

d3:4.8.0

我在后端强制使用 HTTP 401 响应来测试授权例程。

d3.request().on('error', function(e){...}) 未被调用。

d3 文档让我觉得应该这样做:https://github.com/d3/d3-request/blob/master/README.md#request_send

示例 JS:

var postData = whatever;

d3.request(someURL)
  .on('error', function(e) {
    console.log('In on(error): ', e);
  })
  .header("Content-Type","application/x-www-form-urlencoded")
  .send('POST', postData, function(error,response) {
      if (error) {
          console.log('Error in send() callback: ', error);
          return;
      }
      console.log('okay');
});

预期控制台日志:

POST https://someURL/ 401 (Unauthorized)
XHR finished loading: POST "https://someURL/"
In on(error): ProgressEvent {isTrusted: true ... }

收到控制台日志:

POST https://someURL/ 401 (Unauthorized)
XHR finished loading: POST "https://someURL/"
In send(): ProgressEvent {isTrusted: true ... }

未触发 on('error') 回调。我已经尝试更改链中的 on() 调用位置,这无关紧要,也没有。

【问题讨论】:

    标签: javascript ajax d3.js callback xmlhttprequest


    【解决方案1】:

    在问题中,带有两个参数的 send() 正在阻止 on() 触发。这是一个示例,它调用 on(error) 以响应 401 结果,以及成功的发送回调:

    d3.request(someURL)
      .header("Content-Type","application/x-www-form-urlencoded")
      .send('POST', postData, function(response) {
          console.log('in send() callback with response ', response)
      })
      .on('error', function(e) {
        console.log('on() error: ', e);
      })
    ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      相关资源
      最近更新 更多