我正在尝试在angularjs中向geoserver wfs发出一个$ http.jsonp请求,希望回调名称是“parseResponse”,但是我可以看到请求是由angular控制并设置为其标准的as“angular.callbacks._0”
可以在以下位置找到WFS的供应商参数 http://docs.geoserver.org/maintain/en/user/services/wms/vendor.html#wms-vendor-parameters表明可以通过在URL中设置format_options = callback:myCallback来设置回调,默认情况下设置为“parseResponse”,但Angular似乎忽略了这一点并添加了自己的回调参数,无论哪种结果在http调用失败,因为parseResponse未定义
这让我处于不寻常的位置,不得不在URL中将回调名称设置为“angular.callbacks._0”以获得请求的响应,如果我想做任何其他的话,这显然是一个混乱的解决方案调用此WFS(我会/将会这样做)
http://jsfiddle.net/ADukg/15394/
myApp.controller("searchCont",function($scope, $http,$sce){
$scope.name = 'Superhero';
jsonSchools = "http://inspire.dundeecity.gov.uk/geoserver/inspire/wfs?service=wfs&version=2.0.0&request=GetFeature&typeNames=inspire:SCHOOL_CATCHMENTS_PRIMARY&%20srsName=EPSG:27700&bbox=338906.9,732790.9,338907.1,732791.1&&outputFormat=text/javascript&format_options=callback:angular.callbacks._0";
//jsonSchools = "http://inspire.dundeecity.gov.uk/geoserver/inspire/wfs?service=wfs&version=2.0.0&request=GetFeature&typeNames=inspire:SCHOOL_CATCHMENTS_PRIMARY&%20srsName=EPSG:27700&bbox=338906.9,732790.9,338907.1,732791.1&&outputFormat=text/javascript&format_options=callback:parseResponse";
var trustedUrlSchools = $sce.trustAsResourceUrl(jsonSchools);
$http.jsonp(trustedUrlSchools).then(function (response) {
$scope.schools = response.data.features;
console.log($scope.schools);
});
});
我已经设置了一个JS Fiddle来演示这个问题,第一个URL展示了工作临时解决方案,第二个注释掉的URL显示了理论上应该如何看待URL。值得注意的是,如果您在没有format_options参数的情况下复制URL本身,它仍然会默认为parseResponse
最后,我遇到了一个先前的stackoverflow问题,看起来类似于(how to custom set angularjs jsonp callback name?),但它似乎没有帮助,并给出了泛型方法未定义的错误。
任何有关此问题的帮助或指示都会受到赞赏,我到目前为止尝试在http请求中设置jsonpCallbackParam但无济于事。希望这是我的一个疏忽,我可以归结为缺乏经验。
提前致谢