Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Http Get请求和JSONP不工作_Javascript_Ajax_Http_Angularjs_Jsonp - Fatal编程技术网

Javascript Http Get请求和JSONP不工作

Javascript Http Get请求和JSONP不工作,javascript,ajax,http,angularjs,jsonp,Javascript,Ajax,Http,Angularjs,Jsonp,我使用AngularJS$http发送http Get请求 $http({ method: 'get', url: 'http://cross-domain-url/api/v1/service1', params : {'key1' : 'value1'}, data:'', headers : {'Accept': 'application/JSON', 'Content-Type' : 'application/JSON'}, cache : f

我使用AngularJS$http发送http Get请求

$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;
});
但这会导致以下错误“访问控制不允许使用Origin localhost Allow Origin”

但当我将方法更改为JSONP时,我得到了正确的响应,但该响应是XML格式的。As内容类型不能使用JSONP设置,该API默认使用application/xml类型。是否有任何方法可以从以XML格式返回数据的第三方API请求数据


备注:由于第三方由其他人控制,因此我无法更改数据的默认响应类型。

另一种选择是使用
$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) {
    ...
});

将方法更改为'JSONP'而不是'GET',或者放置一个新的key: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;
});