我有以下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
}
我从调试器中获取了以下内容,正如您所看到的,成功函数甚至不在options参数中。我不知道在哪里或如何开始修复它,所以任何帮助都表示赞赏!
url和$ .ajax函数的选项参数值
url = "https://api-fxpractice.oanda.com/v1/instruments?accountId=4161836", options = Object {headers: Object}
答案 0 :(得分:-1)
所发生的事情是,jQuery在需要运行之前不会读取回调。由于默认情况下它是一个AJAX调用而async
是true
,调试器会在执行Web请求时逐步执行它,然后只在请求发出后返回到成功函数完成。如果您将async
选项设置为false
,那么它会被修复,因为它会阻止,直到您实际收到回复为止。如果你没有,它将返回null,因为成功函数没有运行,因此没有修改response
的值