2014-07-16 93 views
-1

我們正在使用JavaScript來避免跨域問題時使用JSONP方法。使用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); 
    } 
}); 

這阿賈克斯始終工作錯誤功能。但請求結果成真。我怎樣才能捕獲parseResponse回調函數?

這是我工作的代碼http://jsfiddle.net/barteloma/E9j7c/

+1

因爲這是JSONP,你必須將'dataType'設置爲''jsonp',而不是''json'。請參閱[手冊](http://api.jquery.com/jQuery.ajax/) – hindmost

回答

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

我的服務鏈接密切返回my_callback({...})結果,它不需要回調參數。所以我可以使用它,就好像JSONP – barteloma

+0

@bookmarker我編輯了我的答案 –