Я пытаюсь использовать ответ json в качестве параметра tooltipValueLookups в sparklines. график, безуспешно. Всплывающая подсказка продолжает показывать 0:5 и 1:8 вместо Малдера:5 и Скалли:8.
Это отлично работает, если я просто объявлю переменную agents точно таким же json:
var agents = {"names":{"0":"Mulder", "1":"Scully"}}
Но все идет наперекосяк, когда я пытаюсь сделать это с ответом сервера, как и предполагалось. Может ли кто-нибудь сказать мне, пожалуйста, что я делаю неправильно?
var agents = $.ajax({
url : "/ajaxAgents",
type : "get",
dataType: 'json'
});
Ответ: {"names":{"0":"Малдер", "1":"Скалли"}}
$("#mini-chart").sparkline([5,8], {
type: 'bar',
height: '30px',
barWidth: 6,
barSpacing: 2,
barColor: '#0aa699',
tooltipFormat: '<span style="color: {{color}}">●</span> {{offset:offset}}: {{value}}',
tooltipValueLookups:{offset:agents.names},
negBarColor: '#0aa699'});
Заранее спасибо.
ИЗМЕНИТЬ
После большого количества кофе и ругани, я, наконец, заработал. Не очень элегантное решение, надо признать.
Во-первых, мне пришлось изменить функцию php на стороне сервера, чтобы она возвращала строку, а не json.
Затем в вызове ajax:
var response = $.ajax({
url : "/ajaxAgents",
type : "get",
dataType: 'text',
global : false,
async : false,
success : function(data){return data;}
}).responseText;
Затем проанализируйте ответ и отфильтруйте его:
var agents = $.parseJSON(response);
var filteredNames = $.map(agents.names, function(el) {
return el;
});
И, наконец, функция спарклайнов:
$("#mini-chart").sparkline(agentsData, {
type: 'bar',
height: '30px',
barWidth: 6,
barSpacing: 2,
barColor: '#0aa699',
tooltipFormat: '<span style="color: {{color}}">●</span> {{offset:offset}}: {{value}}',
tooltipValueLookups:{offset:filteredNames},
negBarColor: '#0aa699'});
@Hüseyin: Спасибо за вашу помощь, это было очень полезно.