0

下面是我的代码:

$.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: '<h2>Dublin - Ireland</h2><p>Embassies and High Commissions</p><a href="http://www.dfat.gov.au/geo/ireland/" title="http://www.dfat.gov.au/geo/ireland/">Read More</a>'
  },
  { c: [44.94199288,119.93167],
      attrs: {'src': 'markers/pin-yellow.png'},
      tooltip: '<h2>London - United Kingdom</h2><p>Embassies and High Commissions</p><a href="http://www.dfat.gov.au/geo/united_kingdom/" title="http://www.dfat.gov.au/geo/united_kingdom/">Read More</a>'
  },
  { c: [28.94199288,100.93167],
      attrs: {'src': 'markers/pin-yellow.png'},
      tooltip: '<h2>Header</h2><p>Embassies and High Commissions</p><a href="#" title="">Read More</a>'
  },
  { c: [44.94199288,115.93167],
      attrs: {'src': 'markers/pin-yellow.png'},
      tooltip: '<h2>Header</h2><p>Embassies and High Commissions</p><a href="#" title="">Read More</a>'
  },
  { c: [20.94199288,135.93167],
      attrs: {'src': 'markers/pin-yellow.png'},
      tooltip: '<h2>Header</h2><p>Embassies and High Commissions</p><a href="#" title="">Read More</a>'
  }
]
4

2 回答 2

3

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

于 2013-11-11T06:43:19.830 回答
2

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

$.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() 将在您的示例中出错。

于 2013-11-11T06:37:16.157 回答