JavaScript并不总是适用于Qualtrics

时间:2016-07-27 22:37:46

标签: javascript qualtrics jchartfx

我正在最终确定使用大量JavaScript的Qualtrics调查的编码。不幸的是,对于我调查中最重要的问题,当问题不在调查中的第一位置时,JavaScript无效[编辑:不加载]。然而,我之前需要提出其他问题,因为此问题上显示的图表取决于之前的答案。

当问题位于调查中的第一个位置时,看到代码工作here是非常令人沮丧的(即使需要一些时间来加载数据,也可以看到5个带蓝条的图表 - 约15秒);但是当我将问题放在第二个位置时,图表不再显示there(为了看到没有图形,因此必须回答第一个问题,然后单击下一个按钮)。

仅供参考,我使用jQuery和一个绘图库:jChartFX。

有没有人知道可能导致这种情况的原因?

[编辑]:这是我的JavaScript代码(不包括加载库的标头)。它应该嵌入HTML的标题中:

    Qualtrics.SurveyEngine.addOnload(function()
{
        $j(document).ready(function($j){    

            $j.ajax({
                url:'https://login.qualtrics.com/WRQualtricsControlPanel/File.php?F=F_6yFft59YgdvIHfT', 
                success: function(data){
                    var actuelle, rawlsien, utilitarien; 
                    var donnees_rawlsien, donnees_actuelle, donnees_utilitarien;
                    var prefere, egalitaire, actuelle, rawlsien, utilitarien;   
                    var donnees_prefere, donnees_egalitaire; //, donnees_rawlsien, donnees_actuelle, donnees_utilitarien;
                    var donnees = {"utilitarien":donnees_utilitarien,"rawlsien":donnees_rawlsien,"egalitaire":donnees_egalitaire,"actuelle":donnees_actuelle,"prefere":donnees_prefere};
                    prefere = new cfx.Chart();
                    actuelle = new cfx.Chart();
                    egalitaire = new cfx.Chart();
                    rawlsien = new cfx.Chart();
                    utilitarien = new cfx.Chart();
                    donnees_egalitaire = new Array(2);
                    donnees_egalitaire[0] = {x: 0, y: 1800}
                    donnees_egalitaire[1] = {x: 1, y: 1800}
                    donnees_prefere = new Array(2);
                    donnees_prefere[0] = {x: 0, y: 1800}
                    donnees_prefere[1] = {x: 1, y: 1800}
                    var out = charge(data);        
                    donnees_actuelle = out[0];
                    donnees_utilitarien = out[1];
                    donnees_rawlsien = out[2];
                    draw(utilitarien,"utilitarien", donnees_utilitarien);
                    draw(rawlsien,"rawlsien", donnees_rawlsien);
                    draw(actuelle,"actuelle", donnees_actuelle);
                    draw(egalitaire,"egalitaire", donnees_egalitaire);
                    draw(prefere,"prefere", donnees_prefere);   
                },
                error: function(){ 
                    alert('Fail of data loading: utilitarien');
                    donnees_utilitarien = new Array(2);
                    donnees_utilitarien[0] = {x: 0, y: 1800}
                    donnees_utilitarien[1] = {x: 1, revenu: 1800}
                }
            });

            function charge(texte) {
                var dat=texte;
                var tab=dat.split('\n');
                var donnees_actuelle = new Array(100);
                var donnees_utilitarien = new Array(100);
                var donnees_rawlsien = new Array(100);
                for (var i = 0; i<10; i++) {
                    donnees_actuelle[i] = {x:i, y:parseInt(tab[0].split('\t')[0])}
                    donnees_utilitarien[i] =  {x:i, y:parseInt(tab[0].split('\t')[1])}
                    donnees_rawlsien[i] =  {x:i, y:parseInt(tab[0].split('\t')[2])}
                } (...)
                    donnees_actuelle[99] = {x:i, y:parseInt(tab[7].split('\t')[0])}
                    donnees_utilitarien[99] =  {x:i, y:parseInt(tab[7].split('\t')[1])}
                    donnees_rawlsien[99] =  {x:i, y:parseInt(tab[7].split('\t')[2])}
                    var out = new Array(3);
                    out[0] = donnees_actuelle;
                    out[1] = donnees_utilitarien;
                    out[2] = donnees_rawlsien;
                    return out;
            }

            function draw(graph, name, donnees) {   
                graph.setGallery(cfx.Gallery.Bar);

                graph.getAllSeries().setVolume(100);
                var axeY = new cfx.FieldMap();
                axeY.setName("y");
                axeY.setUsage(cfx.FieldUsage.Value);
                graph.getDataSourceSettings().getFields().add(axeY);
                graph.setDataSource(donnees);           
                graph.getAxisY().setMax(12000);
                graph.getAxisX().setVisible(false);
                graph.getAxisY().setStep(1000);
                graph.setBackColor('#00FFFFFF');
                var titreX, titreY;
                titreY = new cfx.TitleDockable();            
                titreY.setText("niveau de vie (€/mois)");
                titreY.setTextColor("#57ACDA");
                graph.getAxisY().setTitle(titreY);
                graph.getLegendBox().setDock(cfx.DockArea.Top);
                graph.getSeries().getItem(0).setText("Niveau de vie des français (en €/mois)");
                graph.getSeries().getItem(0).setColor("#FF0000");
                graph.getLegendBox().setTextColor("#FF0000");
                graph.getLegendBox().setMarginX(250);


                var divHolder = document.getElementById(name);
                graph.create(divHolder);
            }
    });         

});

1 个答案:

答案 0 :(得分:0)

现在,由于Qualtrics支持的帮助,它运行正常。但是,我还没有理解导致问题的原因。它似乎现在有效,因为调查是分发的。该错误仅出现在预览模式中。