对于我需要的功能,我找到了一个非常好的 AJAX 示例。基本上它调用 Yahoo API。但我正在使用 Angular.JS。所以我不知道如何转换它。有什么帮助吗?
这就是 AJAX 函数(详细信息参见 this posting 和 this JsFiddle ):
$.ajax({
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'YAHOO.Finance.SymbolSuggest.ssCallback',
data:{
query: request.term
},
url: 'http://autoc.finance.yahoo.com/autoc',
success: function (data) {
alert("yes");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
所以我正在寻找的是如何将上面的代码转换成类似这样的代码。该示例应该只打印返回值。请参阅this JsFiddle 。特别是,我不知道如何处理 jsonpCallback 参数。这是我在任何其他示例中找不到的。
<div ng-app='MyModule' ng-controller='DefaultCtrl'>
{{ test() }}
</div>
JavaScript
function DefaultCtrl($scope, myService) {
$scope.test = myService.test;
}
angular.module('MyModule', [])
.factory('myService', function () {
return {
test: function () {
$http.get("?????")
.success(function(data, status, headers, config) {
return data;
})
.error(function(data, status, headers, config) {
return "there was an error";
})
}
}
});
中间解决方案 - 在您的帮助下 - 看起来像这样。谢谢。我必须安装 Chrome extension只要使用 the updated JsFiddle 就可以跨域调用。我更改了将参数传递给 http-get 调用的方式,并且还包含了 $q( promise )处理。结果包含来自 Yahoo YQL API 的有效列表。只需要处理该数组即可。
function DefaultCtrl($log, $scope, $http, myService) {
var promise = myService.getSuggestions('yahoo');
promise.then(
function(payload) {
$scope.test = payload;
$log.info('received data', payload);
},
function(errorPayload) {
$log.error('failure loading suggestions', errorPayload);
});
}
angular.module('MyModule', [])
.factory('myService', function ($http, $log, $q) {
return {
getSuggestions: function (symbol) {
var deferred = $q.defer();
$http.get('http://d.yimg.com/autoc.finance.yahoo.com/autoc', {
cache: true,
params: {
query: symbol,
callback: 'YAHOO.Finance.SymbolSuggest.ssCallback'
}
})
.success(function(data) {
deferred.resolve(data);
})
.error(function(msg, code) {
deferred.reject(msg);
$log.error(msg, code);
});
return deferred.promise;
}
}
});
最佳答案
看看文档
https://docs.angularjs.org/api/ng/service/ $http
$http.get('http://autoc.finance.yahoo.com/autoc',
{dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'YAHOO.Finance.SymbolSuggest.ssCallback'}).success(function(data){ alert("yes"); });
关于javascript - 如何将 AJAX $http 调用转换为 Angular.JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048450/