Http Get Request和JSONP无法正常工作

时间:2013-08-05 21:57:36

标签: javascript ajax http angularjs jsonp

我使用AngularJS $ http发送HTTP Get Request。

$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;
});

但是这会导致以下错误“Access-Control-Allow-Origin不允许使用Origin localhost。”

但是当我将方法更改为JSONP时,我得到了正确的响应,但该响应是XML格式的。由于无法使用JSONP设置内容类型,默认情况下该API使用application / xml类型。有什么方法可以从第三方API请求以XML格式返回数据的数据。 ?

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

2 个答案:

答案 0 :(得分: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) {
    ...
});

答案 1 :(得分:0)

将方法更改为'JSONP'而不是'GET'或添加新密钥:value“dataType”:“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;
});