Jquery Ajax 没有拾取选项参数中指定的函数回调

Jquery Ajax is not picking up function callbacks specified in options argument

本文关键字:回调 函数 参数 选项 Ajax Jquery      更新时间:2023-09-26

我有以下js函数,我遇到了一个问题,即永远不会调用成功回调。我在chrome调试器中逐步浏览了相关的JQuery代码,它在选项参数中拾取标头对象,而不是成功,完成,始终和错误等回调。它只是跳过它们,我不知道为什么。我尝试将 url 指定为选项中的条目,并且它按我的预期被拾取。

Forex.getInstrumentList = function(){
  var response;
  $.ajax("https://api-fxpractice.oanda.com/v1/instruments?accountId=" + Forex.selectedAcct,
  {
    success: function(data, err, jqXHR){
      if(err){
        console.log(err);
        return;
      }
      response = data;
    },
    headers: {
      Authorization: "Bearer notMyrealkey345234234wstd3451345"
    }
  });
  return response; //JSON
}

我从调试器中获取了以下内容,如您所见,成功函数甚至不在选项参数中。我不知道在哪里或如何开始解决此问题,因此非常感谢任何帮助!

URL 和 $.ajax 函数的选项参数值

url = "https://api-fxpractice.oanda.com/v1/instruments?accountId=4161836", options = Object {headers: Object}

所以发生的事情是jQuery在需要运行回调之前不会读取回调。由于它是一个 AJAX 调用,并且默认情况下async true,因此调试器将在执行 Web 请求时单步执行它,然后仅在请求完成后返回到成功函数。如果将async选项设置为 false,则它是固定的,因为它会阻止,直到您实际得到响应。如果不这样做,它将返回 null,因为成功函数尚未运行,因此尚未修改 response 的值