Javascript jQuery($.ajax)和Angular($http)中的请求不起作用
我试图以最快、最直接的方式从API中获取一些数据。使用邮递员,我可以很容易地在url()中输入GET并获取: 但是,当我尝试使用jQuery或Angular执行GET时,我不能。下面是我收到的两个电话和错误Javascript jQuery($.ajax)和Angular($http)中的请求不起作用,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我试图以最快、最直接的方式从API中获取一些数据。使用邮递员,我可以很容易地在url()中输入GET并获取: 但是,当我尝试使用jQuery或Angular执行GET时,我不能。下面是我收到的两个电话和错误 使用jQuery $.ajax({ type: 'GET', dataType: 'JSONP', url: 'http://www.wsfebracis.com.br/Json/ListarGrupos/', success: function(data) { co
$.ajax({
type: 'GET',
dataType: 'JSONP',
url: 'http://www.wsfebracis.com.br/Json/ListarGrupos/',
success: function(data) {
console.log(data);
},
error: function(e) {
console.log(e);
}
}).done(function( data ) {
console.log("done ", data);
})
.fail( function(xhr, textStatus, errorThrown) {
console.log('erro');
console.log(xhr.responseText);
console.log(textStatus);
console.log(errorThrown);
});
- 对象{readyState:4,状态:200,状态文本:“success”}
- 埃罗
- 未定义
- 解析器错误
- 错误:未调用JQuery11108493785087484866_1448911631891(…)
$http.jsonp('http://www.wsfebracis.com.br/Json/ListarGrupos/ListarGrupos')
.success(function(data, status, headers, config) {
$log.error(data);
$log.error(status);
$log.error(headers);
$log.error(config);
})
.error(function(data, status, headers, config) {
$log.log(data);
$log.log(status);
$log.log(headers);
$log.log(config);
});
- 未定义
- (d) {b | |(b=ad(a));返回d?(d=b[F(d)],void 0==d&&(d=null),d):b}
- 对象{方法:“JSONP”,transformRequest:Array,transformResponse:Array,url: “”,标题:对象}
重要!我没有访问API的权限,因此阻止某些建议的方法(jQuery或Angular)将是受欢迎的解决方案。在Angular应用程序中使用$http、$q和promise方法 下面可以找到一个例子
angular
.module('yourApp')
.factory('dataService', dataService);
dataService.$injector = ['$http', '$q'];function dataSvc($http, $q) {
var service = {
getListGroupsSvc :getListGroupsSvc};return service;
function getData(url) {
var deferred = $q.defer();
$http.get(url)
.then(function (result) {
deferred.resolve(result.data);
},
function (result) {
deferred.reject(result);
});
return deferred.promise;
}
您可以调用上述函数
function getListGroupsSvc(){
var url = 'http://www.wsfebracis.com.br/Json/ListarGrupos/ListarGrupos';
return getData(url);
}
通过在API中启用CORS,问题已经解决。您返回的是JSON,而不是JSONP,这是不同的。因此,呃,为什么您在网页中发送JSONP请求,在邮递员中发送JSON请求?这是两种截然不同的数据类型。一个导致XHR请求需要json,另一个导致脚本请求需要javascript。我尝试使用$http.get,但API返回以下错误:“XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”头。因此不允许访问Origin”“。”因此,我使用的是JSONP。如果跨源服务不支持JSONP,您就不能使用JSONP,原因与如果跨源服务不支持CORS,您就不能使用XHR相同。如果将数据类型更改为JSON而不是JSONP,会发生什么?
function getListGroupsSvc(){
var url = 'http://www.wsfebracis.com.br/Json/ListarGrupos/ListarGrupos';
return getData(url);
}