如何访问angularjs回调结果jsonp

how to access angularjs callback result jsonp

本文关键字:angularjs 回调 结果 jsonp 访问 何访问      更新时间:2023-09-26

我有一个url的WMS查询。

http://giswebservices.massgis.state.ma.us/geoserver/wms?VERSION=1.1.1&请求= GetFeatureInfo&层= massgis: GISDATA.ACECS_POLY& SRS = EPSG: 26986和BBOX = 11830.0, 776202.9449152543, 348201.0, 961492.0550847457,宽度= 708,身高= 390,INFO_FORMAT = text/javascript& FEATURE_COUNT = 10, QUERY_LAYERS = massgis: GISDATA.ACECS_POLY& X = 120, Y = 109, FORMAT&服务风格=,= WMS

这个url返回JSON结果parseResponse( ...json...)

我想创建angularjs $http jsonp,但是它不工作。

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

这会给出错误"parseResponse is not defined"但是我定义了这个函数

你可以尝试在params中设置format_options,因为angularjs默认的回调函数名称是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'
    },
};

下面是如何使用jsonp访问AngularJS回调结果:

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
    }
}

我在url上取下了一个重要的参数(这是REQUEST=GetFeatureInfo),并将其包含在jsonp函数调用的params参数中,以显示如何传递params参数的示例。