从div访问JSON类型的数据?

时间:2018-01-29 10:39:20

标签: javascript

所以我有一个显示Microsoft情感API结果的div,例如:

anger: 0.28446418
contempt: 0.00341128884
disgust: 0.000332433876
fear: 0.009447911
happiness: 0.02609423
neutral: 0.6288482
sadness: 0.00180563633
surprise: 0.04559612

以下是显示数据的代码:

 .done(function(data) {
        // Get face rectangle dimensions
        var faceRectangle = data[0].faceRectangle;
        var faceRectangleList = $('#faceRectangle');
        var data1="";

        // Append to DOM
        for (var prop in faceRectangle) {
            data1 += "<li> " + prop + ": " + faceRectangle[prop] + "</li>";
        }
        faceRectangleList.html(data1);

        // Get emotion confidence scores
        var scores = data[0].scores;
        var scoresList = $('#scores');
        var data2="";
        // Append to DOM
        for(var prop in scores) {
            data2 += "<li> " + prop + ": " + scores[prop] + "</li>";
        }

        scoresList.html(data2);

    }).fail(function(err) {
        alert("Error: " + JSON.stringify(err));
    });
});



}

function make_graph(){


}

现在我需要从这些分数中绘制一条线。您能告诉我如何在另一个函数中访问这些分数的每个单独值,以便我可以将它们绘制为图形中的点吗?

4 个答案:

答案 0 :(得分:1)

只需从make_graph回调中调用done,然后将数据传递给它。就像这样。

.done(function(data) {
     // ... do what you already do
     make_graph(data);
}).fail(function (err) {
    alert("Error: " + JSON.stringify(err));
});

function make_graph(data) {
    for (d in data) {
        // do stuff with data
    }
}

答案 1 :(得分:0)

根据给定的信息,您可以制作这样的功能

function drawLine(dataScores) {
    for (var d in dataScores) {
        // dataScores[d] will give you the score
        // rest of the relevent code
    }
}

并像这样称呼它

drawLine(scores);

答案 2 :(得分:0)

我认为在HTML DOM中编写数据并将其读回来是不错的做法。

但如果您需要这个,请尝试这样的事情

plotData = []
var scoresList = $('#scores')
scoresList.children('li').each(function(i) {
    data = i.thml()
    plotData.push(i.split(':').map(i => [i[0].trim(), parseFloat(i[1])]))
});

// here You have all data in plotData
// [['anger', 0.28446418], ...]
// Draw Your plotData here 

答案 3 :(得分:0)

如果你想从div li读回来,这里有一个jquery函数来将html转换为jquery数据对象

$(document).ready(function(){
    var dataArr={};
    $("#scoresli" ).each(function( index ){
    data=$( this ).text().split(":");
    dataArr[data[0]]=data[1]
});
alert(JSON.stringify(dataArr));
});
//{"anger":" 0.28446418\n","contempt":" 0.00341128884"}