لماذا يختفي مخطط فطيرة Dojo عندما أتصل بالتحديثات بعد مكالمة Ajax؟

StackOverflow https://stackoverflow.com/questions/4331568

سؤال

أحاول تحديث مخطط فطيرة dojo باستخدام طريقة التحديثات. أنا أستدعي الطريقة بعد إجراء مكالمة AJAX للحصول على بيانات صفيف JavaScript محدثة.

ها هو جافا سكريبت:

var eventByReasonsData = .... //gets populated on jsp page compile 

var theme = dojox.charting.themes.Julie;

var eventReasonsChart = null;


function makeEventsByReason() {

    var dc = dojox.charting;
    eventReasonsChart = new dc.Chart2D("eventsByReasonChart");
    eventReasonsChart.setTheme( theme ).addPlot("default", {
        type: "Pie",
        font: "normal normal 8pt Tahoma",
        fontColor: "black",
        labelOffset: -20,
        radius: 100

    }).addSeries("eventSeries", eventByReasonsData );

    var anim_a = new dc.action2d.MoveSlice(eventReasonsChart, "default");

    var anim_b = new dc.action2d.Highlight(eventReasonsChart, "default");

    var anim_c = new dc.action2d.Tooltip(eventReasonsChart, "default");

    eventReasonsChart.render();


}

ها هو HTML الخاص بي:

        <div id="eventsByReasonChart" ></div>

وهنا جافا سكريبت إجراء مكالمة أياكس:

     new Ajax.Request( url, {
        method: 'post',
        parameters: params,
        onComplete: function(response) {


            if( response.responseText != "empty" )
            {
                var chart = eventReasonsChart;

                eventByReasonsData = response.responseText;

                chart.updateSeries( "eventSeries", eventByReasonsData );

                chart.render();                                                 
            }

        }
    });

أخيرًا ، إليك كيفية تنسيق بياناتي عند إرسالها إلى الرسم البياني:

[{ y:48 },{ y:1 },{ y:1 },{ y:14 },{ y:7 },{ y:3 },{ y:8 }]

عندما يتم رسم الرسم البياني في البداية ، كل شيء رائع ، لا مشاكل. بعد إجراء مكالمة Ajax ، أتلقى البيانات الجديدة ، يتم إجراء مكالمة التحديث ويختفي المخطط. لا توجد أخطاء يمكنني رؤيتها على وحدة التحكم.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

وأظن أن eventByReasonsData هي سلسلة متى updateSeries() يتوقع صفيف. يمكنك استخدام dojo.fromJson() لتحويل السلسلة إلى صفيف:

chart.updateSeries( "eventSeries", dojo.fromJson(eventByReasonsData) );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top