jQuery SVG map – 从jQuery Ajax中提取JSON内容无法正常工作

以下是我的代码:

$.ajax({ type: "GET", url: "content/content.json", success: function( data ) { check = true; ajaxMap = data; drawMap(data); } }); function drawMap( data ) { $('#map').mapSvg({ source: 'maps/test.svg', colors: { selected: "#00431e", disabled: "#ffffff" }, tooltipsMode: 'custom', zoom: true, zoomButtons: {'show': true, 'location': 'left'}, pan: true, responsive: true, zoomLimit: [0,500], marks: data, // here I pass data from JSON file tooltipsMode: 'custom', zoom: true, pan: true, responsive: 0, zoomLimit: [0,100] }); } 

当我直接在标记中传递JSON格式的数据时,它可以工作,但是当我传递数据变量时,它不起作用。

更新:这是我的json数据:

 [ { c: [50.84199288,122.83167], attrs: {'src': 'markers/pin-yellow.png'}, tooltip: '

Dublin - Ireland

Embassies and High Commissions

Read More' }, { c: [44.94199288,119.93167], attrs: {'src': 'markers/pin-yellow.png'}, tooltip: '

London - United Kingdom

Embassies and High Commissions

Read More' }, { c: [28.94199288,100.93167], attrs: {'src': 'markers/pin-yellow.png'}, tooltip: '

Header

Embassies and High Commissions

Read More' }, { c: [44.94199288,115.93167], attrs: {'src': 'markers/pin-yellow.png'}, tooltip: '

Header

Embassies and High Commissions

Read More' }, { c: [20.94199288,135.93167], attrs: {'src': 'markers/pin-yellow.png'}, tooltip: '

Header

Embassies and High Commissions

Read More' } ]

如果以json格式表示响应,则必须定义dataType属性。 目前您正在以字符串forms获取数据。

 $.ajax({ type: "GET", url: "content/content.json", dataType:'json', success: function( data ) { check = true; ajaxMap = data; drawMap(data); } }); 

或者在成功处理程序中使用data=JSON.parse(data)

此外,您在示例中显示的是对象文字,而不是json。 见http://json.org/ 。 JSON.parse()会给你的例子带来错误。

有效的JSON是有效的JavaScript,但有效的JavaScript不一定是有效的JSON。 您在问题中发布的json数据不是有效的JSON; 您可以使用JSONlint服务validation这一点。 jQuery.ajax期望JSON但遇到无效的JSON时会引发错误( 请参阅此问题 )。 要解决此问题,您必须修改服务器端代码以发出有效的JSON。 首先,键需要用双引号括起来。