2013-08-05 117 views
0

我使用AngularJS $ http发送HTTP Get请求。Http获取请求和JSONP不工作

$http({ 
    method: 'get', 
    url: 'http://cross-domain-url/api/v1/service1', 
    params : {'key1' : 'value1'}, 
    data:'', 
    headers : {'Accept': 'application/JSON', 
    'Content-Type' : 'application/JSON'}, 
    cache : false 
}).then(function (response) { 
    $waitDialog.hide(); 
    return response; 
}); 

但是,这会导致出现以下错误“访问控制允许来源不允许原始本地主机”。

但是,当我改变方法到JSONP我得到正确的答复,但该答复是在XML中。由于无法使用JSONP设置内容类型,并且该API默认使用application/xml类型。有什么办法可以从第三方API请求数据,并以XML格式返回数据。 ?

P.S:由于第三方是由其他人控制的,所以我不能更改默认响应类型的数据。

回答

0

另一种方法是使用$resorce

$http.defaults.useXDomain = true; 
var Srv = $resource('http://cross-domain-url/api/v1/service1', { 
    key1: '@key' 
}); 

Srv.get({ 
    key: 'value1' 
}, function(data) { 
    ... 
}, function(error) { 
    ... 
}); 
0

要么改变的方法,而不是 'GET' JSONP'或换上新的键:值 “数据类型”: “JSONP”

这里,我给了代码...

$http({ 
    method: 'JSONP', 
    url: 'http://cross-domain-url/api/v1/service1', 
    params : {'key1' : 'value1'}, 
    data:'', 
    headers : {'Accept': 'application/JSON', 
    'Content-Type' : 'application/JSON'}, 
    cache : false 
}).then(function (response) { 
    $waitDialog.hide(); 
    return response; 
});