使用javascript jsonp回调函数



我们在工作javascript时使用JSONP方法来避免跨域问题。

但是我无法理解其中的逻辑。我正在使用一个返回如下结果的服务:

parseResponse({"type":"FeatureCollection",......})

服务链接在这里:http://giswebservices.massgis.state.ma.us/geoserver/wms?VERSION=1.1.1&REQUEST=GetFeatureInfo&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=100&QUERY_LAYERS=massgis:GISDATA.ACECS_POLY&X=120&Y=109&FORMAT&STYLES=&SERVICE=WMS

我在一个JQuery ajax请求中使用它,像这样:

$.ajax({
    type: 'GET',
    url: url,
    dataType: 'json',
    success: function(json) {
        $(".test").html(json.type);
    },
    error: function(e) {
       console.log(e);
    }
});

这个ajax总是工作错误函数。而要求的结果正在实现。我如何捕获parserresponse回调函数?

这是我的工作代码http://jsfiddle.net/barteloma/E9j7c/

由于默认情况下服务返回json响应,即使没有自定义回调参数,我发现最快的解决方案是从错误中获取响应文本并对其进行评估:

var url = "http://giswebservices.massgis.state.ma.us/geoserver/wms?VERSION=1.1.1&REQUEST=GetFeatureInfo&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=100&QUERY_LAYERS=massgis:GISDATA.ACECS_POLY&X=120&Y=109&FORMAT&STYLES=&SERVICE=WMS";
function parseResponse( data ) {
    console.log( 'parse', data );
}
$.ajax({
    type: 'GET',
    url: url,
    dataType: 'json',
    success: function(json) {
    },
    error: function(e) {
        eval(e.responseText);
    }
});

最新更新