Reputation: 6845
I have a WMS query with url like this.
This url returns JSON result parseResponse( ...json...)
I want to create angularjs $http jsonp but it did not work.
function appCtrl($scope, $http){
function parseResponse(data) {
$scope.data = data
}
var httpOptions = {
url: "http://giswebservices.massgis.state.ma.us/geoserver/wms?VERSION=1.1.1&LAYERS=massgis:GISDATA.ACECS_POLY&SRS=EPSG:26986&BBOX=11830.0,776202.9449152543,348201.0,961492.0550847457&WIDTH=708&HEIGHT=390&INFO_FORMAT=text/javascript&FEATURE_COUNT=10&QUERY_LAYERS=massgis:GISDATA.ACECS_POLY&X=120&Y=109&FORMAT&STYLES=&SERVICE=WMS",
method: "JSONP",
params : {
REQUEST: 'GetFeatureInfo',
},
};
$http(httpOptions).
success(function(data){
console.log(data);
$scope.data = data;
}).
error(function(data){
console.log(data);
});
}
This gives error "parseResponse is not defined" But I defined that function
Upvotes: 0
Views: 322
Reputation: 1014
You can try set format_options in params, Because angularjs default callback function name is JSON_CALLBACK
var httpOptions = {
url: "http://giswebservices.massgis.state.ma.us/geoserver/wms?VERSION=1.1.1&LAYERS=massgis:GISDATA.ACECS_POLY&SRS=EPSG:26986&BBOX=11830.0,776202.9449152543,348201.0,961492.0550847457&WIDTH=708&HEIGHT=390&INFO_FORMAT=text/javascript&FEATURE_COUNT=10&QUERY_LAYERS=massgis:GISDATA.ACECS_POLY&X=120&Y=109&FORMAT&STYLES=&SERVICE=WMS",
method: "JSONP",
params : {
REQUEST: 'GetFeatureInfo',
format_options: 'callback: JSON_CALLBACK'
},
};
Upvotes: 1
Reputation: 2632
Here is how to access your AngularJS callback result using jsonp
:
http://jsfiddle.net/jCUSh/138/
function WMSCtrl($scope, $http) {
$scope.nums = [1,2,3]
$scope.data = null;
$scope.get_data = function() {
var url2 = 'http://giswebservices.massgis.state.ma.us/geoserver/wms?VERSION=1.1.1&LAYERS=massgis:GISDATA.ACECS_POLY&SRS=EPSG:26986&BBOX=11830.0,776202.9449152543,348201.0,961492.0550847457&WIDTH=708&HEIGHT=390&INFO_FORMAT=text/javascript&FEATURE_COUNT=10&QUERY_LAYERS=massgis:GISDATA.ACECS_POLY&X=120&Y=109&FORMAT&STYLES=&SERVICE=WMS'
$http.jsonp(url2, {params : {REQUEST: 'GetFeatureInfo'}});
}
window.parseResponse = function(data) {
$scope.data = data
}
}
I took off a vital param on the url (which was REQUEST=GetFeatureInfo
) and included it in the params argument on the jsonp
function call to show an example of how the params
arguments is passed.
Upvotes: 0