我们在工作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);
}
});