Javascript jquery-调用函数在事件声明中返回json字符串

Javascript jquery-调用函数在事件声明中返回json字符串,javascript,jquery,json,Javascript,Jquery,Json,我正在使用一个名为MapSVG的插件,并且正在制作一个事件日历来与之并行运行,如果地图上有事件,则地图上的国家会高亮显示,并带有一个小信息的工具提示-单击后,国家会在右侧的一个面板中显示更多信息。 问题在于从SQL数据库收集数据,并将数据传递给插件。这就是我到目前为止所尝试的 我有一个函数,它通过SQL/JSON数组将事件匹配到它们所在的国家,创建一个MapSVG插件可以理解的字符串: function regions(data) { var region_array = 'regions:

我正在使用一个名为MapSVG的插件,并且正在制作一个事件日历来与之并行运行,如果地图上有事件,则地图上的国家会高亮显示,并带有一个小信息的工具提示-单击后,国家会在右侧的一个面板中显示更多信息。 问题在于从SQL数据库收集数据,并将数据传递给插件。这就是我到目前为止所尝试的

我有一个函数,它通过SQL/JSON数组将事件匹配到它们所在的国家,创建一个MapSVG插件可以理解的字符串:

function regions(data) {
  var region_array = 'regions: {';

  $.each(data['regions'], function( i, v ) {
    region_array = region_array + i + ': { tooltip: "' + v['events'] + ' events in ' + data[i]['details']['name'] + '", attr:{fill: "#e58271"} },';
  });
  region_array = region_array.slice(0, -1) + '}';
  return region_array;
}
返回一个字符串:

regions: 
{
gb: { tooltip: "1 events in England", attr:{fill: "#e58271"} },
fr: { tooltip: "2 events in France", attr:{fill: "#e58271"} },
de: { tooltip: "1 events in Germany", attr:{fill: "#e58271"} },
at: { tooltip: "6 events in Austria", attr:{fill: "#e58271"} }
}
直接复制到MapSVG时,该字符串可以正常工作,但我需要它动态运行,并根据添加/删除/编辑/扩展的事件进行更改

因此,我原以为在mapssvg事件/声明中运行该函数会起作用,但我遇到了一些问题

$('#mapsvg-other').mapSvg({
  source : 'maps/europe.svg',
  colors: {background: '#CBECF3', base: '#eeaba0', stroke: "#CBECF3", selected: '#d42e12', hover: '#d42e12'},
  regions: {labels: {attr: {fill: '#555555'}}},
  width: '450px',
  height: '450px',
  tooltipsMode: 'custom',
  cursor: 'pointer',


  onClick: function(e,m){

  },
  /* regions goes into here, regions(data) or + regions(data) + will not work, is there a way to do this? */     
});    

有没有办法正确插入此信息?或者我必须生成一个包含每个区域信息的数组,并单独调用?这似乎是一个更糟糕的解决方案,因为它意味着更冗长的代码,所以在追求不断提高的效率和整洁度的过程中,拥有这项工作将是一件好事

PHP是一种选择吗?然后您可以动态生成所需的字符串。不要让您的函数生成字符串,而是直接生成正确的JavaScript数据结构。或者在字符串上使用JSON.decode–但这将是一个相当荒谬的事情,首先构建一个字符串,然后再将其转换为数据结构…不幸的是,不是,如果可以的话,我会使用它,但这个页面将被包括在一个客户网站上,该网站有非常严格的规则/regs=/所有PHP都是在我们的服务器上完成的,并通过AJAX调用请求加载到地图中。我想我可能理解你的建议CBroe,我能想到的唯一解决办法是单独列出各个地区,然后创建一个数组,其中包含每个区域的详细信息或缺少详细信息-令人烦恼的是,然后在加载时调用每一组详细信息。。这是一个可行的解决方案,但不是最好的!哈哈,我本以为我可以调用一个函数在事件中返回一个字符串:但可能不是!