duanliang1999 2013-07-30 10:24
浏览 199

Ajax + morris.js:无法调用undefined的方法'match'

I'm trying to create charts using ajax and morris.js, but I get this error :

Cannot call method 'match' of undefined in morris-0.4.3.min.js:1

Practically, the graph just doesn't show up.

Here's my code :

index.html


<link rel="stylesheet" href="http://cdn.oesmith.co.uk/morris-0.4.3.min.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="http://cdn.oesmith.co.uk/morris-0.4.3.min.js"></script>

<script type="text/javascript">

$(document).ready(function(){    
  $.ajax({    
    url: 'db.php', //le fichier qui va nous fournir la réponse      
    success: function(outEvoVal) {    
        console.log(outEvoVal);

        Morris.Line({  
        element: 'graph', // l'élément qui va centenir le dessin  
        data: outEvoVal, //notre objet de données    
        xkey: 'd', // on souhaite afficher notre graph en fonction de temps alors on assigne  'd' pour les axes des x   
        ykeys: ['i','q'],   // les autres sur les axes des y  
        labels: ['chaine','prea'], // ajouter un label a chaque courbe    
        lineColors: ['#0000FF','#044c29'], // différencier chaque courbe avec une couleur    
        lineWidth: 2, // largeur de chaque ligne  
      });    
    }    
  });
});
</script>
</head>
<body>
  <div id="graph"></div>
</body>

db.php (which I should not have called db, but w/e)

<?php
    /*Mysql hostname*/
    $hostname = 'localhost';
    /*Mysql username*/
    $username = 'root';
    /*Mysql password*/
    $password = 'root';

try {
    $db = new PDO("mysql:host=$hostname;dbname=kpi", $username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}

 catch(PDOException $e) {
 echo "erreur: ".$e->getMessage();
 }

//requete qui va compter le nombre d’utilisateur ,les question et les reponses en fonction de la date
$requete = $db->query('SELECT Heure, TAT_CHAINE, TAT_PREA FROM out_evo_tat group by Heure');

//faire une boucle pour récupérer le résultat de notre requête
$requete->fetch(PDO::FETCH_ASSOC);
while( $row = $requete->fetch()) {
    $tableau[]=array('d'=>$row['Heure'],'i'=>$row['TAT_CHAINE'],'q'=>$row['TAT_PREA']);
}

//afficher le tableau sous format json
echo json_encode($tableau);
?>

Actually, everything should work perfectly, as the console.log(outEvoVal); displays the good character strings.

Thanks all.

  • 写回答

1条回答 默认 最新

  • douji6940 2014-05-21 14:27
    关注

    just change the script to

    $(document).ready(function(){    
      $.ajax({    
        url: 'db.php',
        dataType: "json",
        success: function(outEvoVal) {    
          console.log(outEvoVal);
          Morris.Line({  
            element: 'graph',
            data: outEvoVal,
            xkey: 'd',
            ykeys: ['i','q'],
            labels: ['chaine','prea'],
            lineColors: ['#0000FF','#044c29'],
            lineWidth: 2,
          });    
        }    
      });
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器