使用javascript jsonp回调函数

时间:2014-07-16 08:36:49

标签: javascript jquery ajax

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

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

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

Servcice链接在这里: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总是有效的错误功能。但请求结果将成真。如何捕获parseResponse回调函数?

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

1 个答案:

答案 0 :(得分:-1)

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

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