gpt4 book ai didi

javascript - http.jsonp 和 javascript 中的回调

转载 作者:行者123 更新时间:2023-11-28 15:29:03 26 4
gpt4 key购买 nike

我正在开发一个可以考虑 AWS 实例成本的计算器。我正在从亚马逊上的 .js 文件中提取数据,我想将其读入一个对象,但我不断收到错误“ Uncaught ReferenceError :未定义回调”..这是我的 .js 文件。

(function() {
var app = angular.module('formExample', []);

var ExampleController = function($scope, $http) {
$scope.master = {};

$scope.update = function(user) {
$scope.master = angular.copy(user);
$scope.GetAws();
};

$scope.reset = function() {
$scope.user = "";
};

function callback(data) {
$scope.aws = data;
}

$scope.GetAws = function() {
var url = "http://a0.awsstatic.com/pricing/1/ec2/linux-od.min.js?callback=callback";
$http.jsonp(url);
};

$scope.reset();
};
app.controller('ExampleController', ['$scope', '$http', ExampleController]);
}());

最佳答案

奇怪的是,您使用的 aws 链接支持 jsonp 但它不采用自定义回调函数名称。 (至少你可以查找一下他们正在寻找的查询字符串是否是callback)。当我们提供callback=JSON_CALLBACK时,Angular会处理它,它会被转换为Angular.callbacks_x,它由Angular临时全局公开以处理请求并相应地解析Promise。但为此,端点必须采用回调参数并将响应包装在同一字符串和函数调用中。然而,这个端点似乎没有考虑它,即使没有任何回调,它也会自动包装到默认的回调函数调用中。因此,您需要注入(inject) $window (正确的 DI 方式)对象并为其设置 callback 函数,而 ?callback=callback 是无关紧要的。

  var ExampleController = function($scope, $http, $window) {
$scope.master = {};

//....

$window.callback = function(data) {
$scope.aws = data;
}

$scope.GetAws = function() {
var url = "http://a0.awsstatic.com/pricing/1/ec2/linux-od.min.js?callback=callback";
$http.jsonp(url);
};

$scope.reset();
};

app.controller('ExampleController', ['$scope', '$http', '$window', ExampleController]);

<强> Plnkr

关于javascript - http.jsonp 和 javascript 中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28058153/

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