简体   繁体   English

Morris.js无法显示Ajax返回的数据

[英]Morris.js unable to display ajax-returned data

I have the following code to show a file's downloads in the past 30 days: 我有以下代码来显示文件在过去30天内的下载:

All data comes from "ajax/downloads.php" by doing a simple query to my database. 通过对我的数据库进行简单查询,所有数据都来自“ ajax / downloads.php”。

    var pastDays = 30; //this value shows how many days back to show statistics
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajax/downloads.php",
        dataType: "json",
        data: "days="+pastDays,
        success : function(res) {
            var obj = [];
            for(var x = 0; x <= pastDays; x++){
                var currObj = res[x];
                var objCombo = currObj.split("|");
                var objItem = "{date: '"+objCombo[0]+"', downloads: '"+objCombo[1]+"'}";
                objItem = JSON.stringify(eval("(" + objItem + ")"));
                obj.push(objItem);
            }
            console.log(obj);
}

This is the ajax response (res) that I already get: 这是我已经得到的ajax响应(res):

console.log(res);
["07Apr|1", "06Apr|3", "05Apr|12", "04Apr|11", "03Apr|0", "02Apr|0", "01Apr|6", "31Mar|0", "30Mar|7", "29Mar|16", "28Mar|5", "27Mar|5", "26Mar|12", "25Mar|9", "24Mar|4", "23Mar|10", "22Mar|16", "21Mar|2", "20Mar|19", "19Mar|22", "18Mar|10", "17Mar|11", "16Mar|10", "15Mar|19", "14Mar|0", "13Mar|4", "12Mar|14", "11Mar|5", "10Mar|26", "09Mar|7", "08Mar|5"]

The console output I get after push is: 推送后得到的控制台输出是:

   console.log(obj); 
["{"date":"07Apr","downloads":"1"}", "{"date":"06Apr","downloads":"3"}", "{"date":"05Apr","downloads":"12"}", "{"date":"04Apr","downloads":"11"}", "{"date":"03Apr","downloads":"0"}", "{"date":"02Apr","downloads":"0"}", "{"date":"01Apr","downloads":"6"}", "{"date":"31Mar","downloads":"0"}", "{"date":"30Mar","downloads":"7"}", "{"date":"29Mar","downloads":"16"}", "{"date":"28Mar","downloads":"5"}", "{"date":"27Mar","downloads":"5"}", "{"date":"26Mar","downloads":"12"}", "{"date":"25Mar","downloads":"9"}", "{"date":"24Mar","downloads":"4"}", "{"date":"23Mar","downloads":"10"}", "{"date":"22Mar","downloads":"16"}", "{"date":"21Mar","downloads":"2"}", "{"date":"20Mar","downloads":"19"}", "{"date":"19Mar","downloads":"22"}", "{"date":"18Mar","downloads":"10"}", "{"date":"17Mar","downloads":"11"}", "{"date":"16Mar","downloads":"10"}", "{"date":"15Mar","downloads":"19"}", "{"date":"14Mar","downloads":"0"}", "{"date":"13Mar","downloads":"4"}", "{"date":"12Mar","downloads":"14"}", "{"date":"11Mar","downloads":"5"}", "{"date":"10Mar","downloads":"26"}", "{"date":"09Mar","downloads":"7"}", "{"date":"08Mar","downloads":"5"}"]

However when I feed it to Morris.bar I get "undefined" values. 但是,当我将其输入Morris.bar时,会得到“未定义”的值。

Morris.js works fine though if I specify "var obj" in my code by hand and omit the ajax: Morris.js可以正常工作,但是如果我在代码中手动指定“ var obj”并省略了ajax:

var obj = [ {"date":"07Apr","downloads":"1"}, {"date":"06Apr","downloads":"3"}, {"date":"05Apr","downloads":"12"}, {"date":"04Apr","downloads":"11"}, {"date":"03Apr","downloads":"0"}, {"date":"02Apr","downloads":"0"}, {"date":"01Apr","downloads":"6"}, {"date":"31Mar","downloads":"0"}, {"date":"30Mar","downloads":"7"}, {"date":"29Mar","downloads":"16"}, {"date":"28Mar","downloads":"5"}, {"date":"27Mar","downloads":"5"}, {"date":"26Mar","downloads":"12"}, {"date":"25Mar","downloads":"9"}, {"date":"24Mar","downloads":"4"}, {"date":"23Mar","downloads":"10"}, {"date":"22Mar","downloads":"16"}, {"date":"21Mar","downloads":"2"}, {"date":"20Mar","downloads":"19"}, {"date":"19Mar","downloads":"22"}, {"date":"18Mar","downloads":"10"}, {"date":"17Mar","downloads":"11"}, {"date":"16Mar","downloads":"10"}, {"date":"15Mar","downloads":"19"}, {"date":"14Mar","downloads":"0"}, {"date":"13Mar","downloads":"4"}, {"date":"12Mar","downloads":"14"}, {"date":"11Mar","downloads":"5"}, {"date":"10Mar","downloads":"26"}, {"date":"09Mar","downloads":"7"}, {"date":"08Mar","downloads":"5"} ];

Notice the difference between the two arrays: 注意两个数组之间的区别:

From ajax I get: 从ajax我得到:

["{"date":"07Apr","downloads":"1"}", "{"date":"06Apr","downloads":"3"}", ...]

While the one that works is like that: 虽然可行的是这样的:

[ {"date":"07Apr","downloads":"1"}, {"date":"06Apr","downloads":"3"}, ...]

Finally, this is how I initiate Morris: 最后,这是我启动莫里斯的方法:

        Morris.Bar({
          element: 'bar-requests',
          data: obj,
          xkey: ['date'],
          ykeys: ['downloads'],
          labels: ['downloads']
        });

Any ideas as to how I could feed my ajax returned data to Morris?? 关于如何喂ajax的任何想法都可以将数据返回给Morris?

Maybe I did not express the question properly in the first place, and since I didn't get any answers, I thought to simplify it and post it as a new question (hope I did't violate any of the site rulez)... In any case, problem solved!!! 也许我一开始并没有正确表达问题,并且由于没有得到任何答案,所以我想简化一下并将其发布为新问题(希望我没有违反任何网站rulez)。无论如何,问题解决了!!!

Here is the solution that worked for me: answer by Touhid Alam 这是对我有用的解决方案: Touhid Alam的回答

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM