2014-03-28 2 views
0

tooltipValueLookups 매개 변수로 json 응답을 sparklines 그래프에서 성공없이 사용하려고합니다. 5 : 1 : 툴팁은 0을 보여주는 유지 (8) 대신 멀더 : 5 스컬리 :json 스파크 라인 그래프에 대한 툴팁 값 조회로의 Json 응답

var agents = {"names":{"0":"Mulder", "1":"Scully"}} 

: 난 그냥 정확히 같은 JSON으로 변수 에이전트를 선언하는 경우 8

그것은 완벽하게 작동 그러나 evrything은 의도 한대로 서버 응답으로 시도 할 때 남쪽으로 간다. 누구든지 제발 저에게 말할 수 있습니까, 내가 뭘 잘못하고있는 걸까요?

var agents = $.ajax({ 
    url  : "/ajaxAgents", 
    type : "get", 
    dataType: 'json' 
}); 

응답 : { "이름": { "0": "멀더", "1": "스컬리"}} 사전에

$("#mini-chart").sparkline([5,8], { 
    type: 'bar', 
    height: '30px', 
    barWidth: 6, 
    barSpacing: 2, 
    barColor: '#0aa699', 
    tooltipFormat: '<span style="color: {{color}}">&#9679;</span> {{offset:offset}}: {{value}}', 
    tooltipValueLookups:{offset:agents.names}, 
    negBarColor: '#0aa699'}); 

감사합니다.

EDIT 커피와 맹세를 많이 후, 나는 마침내 일을 얻었다. 매우 우아한 해결책은 아닙니다. 인정해야합니다.

먼저 서버 측 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; 
    }); 

를 그리고 마지막으로, 스파크 기능 : Hüseyin @

$("#mini-chart").sparkline(agentsData, { 
    type: 'bar', 
    height: '30px', 
    barWidth: 6, 
    barSpacing: 2, 
    barColor: '#0aa699', 
    tooltipFormat: '<span style="color: {{color}}">&#9679;</span> {{offset:offset}}: {{value}}', 
    tooltipValueLookups:{offset:filteredNames}, 
    negBarColor: '#0aa699'}); 

: 도움을 주셔서 감사합니다. 매우 도움이되었습니다.

답변

1

필터 $.grep

var filteredNames = $.map(agents.names, function(el, i) { 
    return el; 
}); 

와 JSON 그리고 함수에서 사용하는 같은;

tooltipValueLookups:{offset: filteredNames} 

당신은 데모 여기에서 볼 수 있습니다 jsfiddle

참고 : 서버에서 문자열을 반환하는 경우, 당신은 사용할 필요가;

var agents = jQuery.parseJSON(response); 
+0

죄송합니다. 나는 json을 재 선언 할 수 없다. 그것은 서버로부터의 응답이다. 또한 ** tooltipValueLookups ** 옵션 **에는 ** 키가 있어야합니다. 내가 말했듯이 JSON 객체를 직접 선언하면 기능이 매력적으로 작동합니다. 응답을 사용하려고하면 문제가 발생합니다. 예상했던 것과 정확히 같습니다. 고마워요, 어쨌든 :) – Sam

+0

@Sam, ok json은 동일하게 유지 될 수 있습니다. 내 코드와 데모를 업데이트했습니다. 업데이트 된 asnwer를 참조하십시오. –

+0

이것은 나를 미치게합니다. parseJSON은 json이 이미 객체이기 때문에 null을 반환합니다. 그리고 agent.names를 매핑하면 TypeError가 발생합니다.답장을 보내 주셔서 다시 한번 감사드립니다, @ Hüseyin. – Sam