【发布时间】:2015-01-13 18:27:48
【问题描述】:
在我的 MVC 应用程序中,我正在尝试使用来自数据库的数据创建一个 SVG Map。使用 jQuery,我在控制器中调用一个操作,该操作以 MapSvg 区域参数中预期的格式返回数据。
预期的格式如下:
regions : {
'Yemen': {disabled: true},
'USA': {tooltip: 'USA: Click to go to Google.com', attr: {fill: '#ff0000', href: 'http://google.com', 'cursor': 'help'}}},
'France': {tooltip: 'This is France!', attr: {'cursor': 'help'}},
'Kazakhstan': {tooltip: 'Kazakhstan - the ninth largest country in the world.'}
},
在我的控制器中,我有一个将由 jQuery ajax 请求在视图中调用的操作
public ActionResult GetCountries()
{
List<ScratchMap> allitems = this.Worker.GetAllItems();
var allItemsAsArray = allitems.Select(x => string.Format("'{0}': {{ tooltip: 'Test', attr: {{ fill: '{1}' }} }}", x.PluginCountryName, x.Color)).ToArray();
return Json(allItemsAsArray, JsonRequestBehavior.AllowGet);
}
在View中,jQuery插件和MapSvg插件加载完成后执行如下代码:
$.get('/ScratchMap/GetCountries', {},
function (data) {
var regionsData = '{' + data + '}';
$('#map').mapSvg(
{
source: '@Url.Content("~/Content/Maps/world_high.svg")',
loadingText: 'Loading map...',
tooltipsMode: 'names',
responsive: true,
zoom: true,
pan: true,
zoomButtons: {
'show': true,
'location': 'right'
},
regions: regionsData
});
}), 'json';
呈现页面时,地图不会填充从数据库中检索到的任何国家/地区。但是,当我将 regionData 变量的输出直接复制并分配给 region 参数时,地图会正确加载所有内容。
以下article 告诉我这可能与输入数据类型有关。但是,如果我将 regionData 解析为 JSON,它会告诉我它的格式错误。但是MapSvg 的创建者给出的例子也是错误的格式。
有人对解决方法有任何想法吗?
谢谢。
【问题讨论】:
标签: javascript jquery ajax json svg