gpt4 book ai didi

javascript - 如何从 AJAX 调用 (AngularJS) 正确返回我的数据

转载 作者:行者123 更新时间:2023-12-02 14:10:37 24 4
gpt4 key购买 nike

我有一个调用下面这个函数的 View ,它对我们的 API 进行 AJAX 调用 - 由于某种原因,当我使用 Firefox DOM 检查工具在 AngularScope 中查看它时,它总是返回“未定义”。

如果我检查“网络”选项卡,我可以看到此 URL 已被调用,并且可以看到我期望的 JSON,然后我想返回 data.words JSON 数据,但这总是返回未定义?如果我删除 AJAX 调用并在最后的返回中保留“静态”和“单词”,则按预期工作,所以我很清楚 AJAX 成功调用中的返回似乎不正确...有什么想法吗??

//在 AngularJS 服务文件内

this.getAccSignoffWords = function() {
var url = ApiService.getDomain() + 'account/signoff';
$http({
method : 'GET',
url : url
}).success(function(data) {
if (data.success) {
return data.words; // I want to return this JSON to the scope
}
}).error(function(data) {
throw "Failed to get sign-off words";
})['finally'](function(data) {

});

// return [ 'static', 'words' ]; // this line is commented out and only used for testing and is an example of the type of data expected from data.words
}

最佳答案

事情是,当您发送 http 请求时,需要一些时间来处理数据并将数据发送回您的 JavaScript 代码。但由于 javascript 是异步的,它不会等到响应返回。因此,您可以像 Umakanta Behera 建议的那样返回整个 http 请求,也可以使用回调函数来等待响应返回。

this.getAccSignoffWords = function(callback) {
var url = ApiService.getDomain() + 'account/signoff';
$http({
method : 'GET',
url : url
}).success(function(data) {
if (data.success) {
callback() data.words
}
}).error(function(data) {
throw "Failed to get sign-off words";
})['finally'](function(data) {

});
}

像这样调用这个函数

this.getAccSignoffWords(function(data){
console.log(data) // your http response
})

关于javascript - 如何从 AJAX 调用 (AngularJS) 正确返回我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39634595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com