Javascript 使用jQuery返回未定义json数据的表

Javascript 使用jQuery返回未定义json数据的表,javascript,jquery,json,Javascript,Jquery,Json,嗨,我很困惑,为什么我的表中的数据返回时没有定义。我想我很接近了。 请查看我的JSFIDLE: $(document).ready(function() { $.getJSON( "http://www.corsproxy.com/dvl.thomascooper.com/data/json_return.json", function( data ) { //static table head $('table.stats').append("<t

嗨,我很困惑,为什么我的表中的数据返回时没有定义。我想我很接近了。 请查看我的JSFIDLE:

$(document).ready(function() {
    $.getJSON( "http://www.corsproxy.com/dvl.thomascooper.com/data/json_return.json", function( data ) {
        //static table head
        $('table.stats').append("<th>" + "</th>" + "<th>" + "Date" + "</th>" + "<th>" + "Brand" + "</th>" + "<th>" + "Author" + "</th>" + "<th>" + "Title" + "</th>" + "<th>" + "Posts" + "</th>" + "<th>" + "Exposure" + "</th>" + "<th>" + "Engagement" + "</th>"); 
        //loop through json data
        $.each(data.data.rows,function( i, val ){
            //+1 to number each row starting at 1
            var rowNum = i + 1;
            //create table rows and cell and populate with data 
            $('table.stats').append(  "<tr>" + "<td>" + rowNum + "</td>" + "<td>" +    val.date + "</td>" +"<td>" + val.brand_id + "</td>" + "<td>" + val.author + "</td>" + "<td>" + val.title +  "</td>" + "<td>" + val.posts + "</td>" + "<td>" + val.reach + "</td>" + "<td>" + val.interaction + "</td>" + "</tr>");

        }); 
    });
});
$(文档).ready(函数(){
$.getJSON(“http://www.corsproxy.com/dvl.thomascooper.com/data/json_return.json,函数(数据){
//静态台面
$('table.stats')。追加(“+”+“+”+“+”日期“+”+“+”品牌“+”+”+“+”作者“+”+”+“+”+”标题“+”+”+“+”帖子“+”+”+“+”+”曝光“+”+“+”+“+”约定“+”);
//循环浏览json数据
$.each(data.data.rows,function(i,val){
//+1为从1开始的每行编号
var rowNum=i+1;
//创建表行和单元格并填充数据
$('table.stats').append(“+”+rowNum+“+”+val.date+“+”+val.brand\u id+“+”+”+val.author+“+”+val.title+“+”+val.posts+“+”+val.reach+“+val.interaction+”);
}); 
});
});
小提琴:

在这里,val不是对象(您的数据告诉我)

因此,您无法访问未定义的属性:val.date

我想,这就是你想要的:

$(document).ready(function() {


$.getJSON( "http://www.corsproxy.com/dvl.thomascooper.com/data/json_return.json", function( data ) {

    //static table head
    $('table.stats').append("<th>" + "</th>" + "<th>" + "Date" + "</th>" + "<th>" + "Brand" + "</th>" + "<th>" + "Author" + "</th>" + "<th>" + "Title" + "</th>" + "<th>" + "Posts" + "</th>" + "<th>" + "Exposure" + "</th>" + "<th>" + "Engagement" + "</th>"); 
        //loop through json data
        $.each(data.data.rows,function( i, val ){
            //+1 to number each row starting at 1
            var rowNum = i + 1;
            //create table rows and cell and populate with data 
            $('table.stats').append(  "<tr>" + "<td>" + rowNum + "</td>" + "<td>" + val[0].value + "</td>" +"<td>" + val[1].value + "</td>" + "<td>" + val[2] + "</td>" + "<td>" + val[3].label +  "</td>" + "<td>" + val[4].values[0] + "</td>" + "<td>" + val[5].values[0] + "</td>" + "<td>" + val[6].values[0] + "</td>" + "</tr>");

        }); 
    });


});
$(文档).ready(函数(){
$.getJSON(“http://www.corsproxy.com/dvl.thomascooper.com/data/json_return.json,函数(数据){
//静态台面
$('table.stats')。追加(“+”+“+”+“+”日期“+”+“+”品牌“+”+”+“+”作者“+”+”+“+”+”标题“+”+”+“+”帖子“+”+”+“+”+”曝光“+”+“+”+“+”约定“+”);
//循环浏览json数据
$.each(data.data.rows,function(i,val){
//+1为从1开始的每行编号
var rowNum=i+1;
//创建表行和单元格并填充数据
$('table.stats')。追加(“+”+rowNum+“+”+val[0]。值++++val[1]。值++++val[2]+++val[3]。标签++++val[4]。值[0]+++val[5]。值[0]+++val[6]。值[0]+++val[6];
}); 
});
});

如果查看返回的json,则行是数组数组而不是对象数组。。你没有考虑到这一点

$.each(data.data.rows[0],function( i, val ){
此外,您还试图通过数据的值而不是键来访问数据的值

"<td>" + val.field + "</td>" +"<td>" + val.type + "</td>"
“”+val.field+“”+val.type+“”

签出此项

您正在尝试引用数据,就像它是: 行:[{日期:'',品牌标识:'',作者:'',等等,下一组字段]

您实际得到的是:

行:[[具有字段数据的对象、具有字段数据的对象等],另一个字段数据对象数组等]

这是一个脚本的开始,它将灵活地处理返回内容的方式。我遗漏了许多您需要处理的案例:

    //loop through json data
    $.each(data.data.rows,function( i, val ){
        //+1 to number each row starting at 1
        var rowNum = i + 1, fields = {};

        // Find fields
        $.each(val, function(j, fieldData) {
            if(typeof fieldData == 'string') {
                fields.author = fieldData;
            } else if(fieldData.field == 'title') {
                fields.title = fieldData.label;
            } else {
                fields[fieldData.field] = fieldData.value;
            }
        });

        //create table rows and cell and populate with data 
        $('table.stats').append(  "<tr>" + "<td>" + rowNum + "</td>" + "<td>" + fields.date + "</td>" +"<td>" + fields.brand_id + "</td>" + "<td>" + fields.author + "</td>" + "<td>" + fields.title +  "</td>" + "<td>" + fields.posts + "</td>" + "<td>" + fields.reach + "</td>" + "<td>" + fields.interaction + "</td>" + "</tr>");

    });
//循环json数据
$.each(data.data.rows,function(i,val){
//+1为从1开始的每行编号
var rowNum=i+1,fields={};
//寻找领域
$。每个(val,函数(j,fieldData){
如果(字段数据的类型=='string'){
fields.author=字段数据;
}else if(fieldData.field==“title”){
fields.title=fieldData.label;
}否则{
字段[fieldData.field]=fieldData.value;
}
});
//创建表行和单元格并填充数据
$('table.stats')。追加(“+”+rowNum+“+”+fields.date+“+”+fields.brand\u id+“+”+fields.author+“+”+fields.title+“+”+fields.posts+“+”+fields.reach+“+”+fields.interaction+”);
});

标题行当然可以使用
标记感谢您的输入!谢谢你的意见!
    //loop through json data
    $.each(data.data.rows,function( i, val ){
        //+1 to number each row starting at 1
        var rowNum = i + 1, fields = {};

        // Find fields
        $.each(val, function(j, fieldData) {
            if(typeof fieldData == 'string') {
                fields.author = fieldData;
            } else if(fieldData.field == 'title') {
                fields.title = fieldData.label;
            } else {
                fields[fieldData.field] = fieldData.value;
            }
        });

        //create table rows and cell and populate with data 
        $('table.stats').append(  "<tr>" + "<td>" + rowNum + "</td>" + "<td>" + fields.date + "</td>" +"<td>" + fields.brand_id + "</td>" + "<td>" + fields.author + "</td>" + "<td>" + fields.title +  "</td>" + "<td>" + fields.posts + "</td>" + "<td>" + fields.reach + "</td>" + "<td>" + fields.interaction + "</td>" + "</tr>");

    });