简体   繁体   English

无法使用javascript将JSON对象打印为HTML

[英]Trouble printing JSON objects to HTML with javascript

I have the following ajax code to handle the ajax request of a search form. 我有以下ajax代码来处理搜索表单的ajax请求。

$(document).ready(function() {
$('#alert-message-warning').hide();
$('.shadow-z-1').hide();
$('#dateprice-search').on('click', '#btn-search', function() { 
    $.ajax({
        type: 'post',
        url: '/date-price',
        data: {
            '_token': $('#csrf').val(),
            'product_id': $("#product_id").val(),
            'start': $("#start").val(),
            'end': $("#end").val()
        },
        success: function(data) {
            console.log(Object.keys(data).length);
            console.log(data);
            var cha = Object.keys(data).length;
            if (cha > 0) {
                $('.shadow-z-1').show();
                $('.shadow-z-1').append("<tr class='liquid-row><td>" + data.start + "</td><td>"+ data.end + "</td><td>" + data.end + "</td><td><a class='btn-m btn btn-m-success'>Available</a></td></tr>");
            }
            else{
                $('#alert-message-warning').show();
                $("#alert-message-warning").fadeTo(2000, 5000).slideUp(5000, function(){
                    $("#alert-message-warning").slideUp(5000);
                });                 
            }
        }
    });
  });
});

If required parameters are selected and submitted results are given in JSON Objects. 如果选择了必需的参数,并且在JSON对象中给出了提交的结果。 eg 5 objects but the java script code prints all the rows of the db table (all 10 rows). 例如5个对象,但是Java脚本代码会打印db表的所有行(所有10行)。 What wrong am I doing here ? 我在这里做什么错? 在此处输入图片说明 Detailed JSON objects 详细的JSON对象 详细的JSON对象

What you're getting is an array of objects. 您得到的是一系列对象。 So access your object you have to go to that index and get the object. 因此,访问您的对象,您必须转到该索引并获取该对象。

eg : data[0].start 例如: data[0].start

Or you can use for loop. 或者您可以使用for循环。

for(let i in data) {
    console.log(data[i].start + "\t" + data[i].end);
}
$(document).ready(function() {
    $('#alert-message-warning').hide();
    $('.shadow-z-1').hide();
    $('#dateprice-search').on('click', '#btn-search', function() { 
        $.ajax({
            type: 'post',
            url: '/date-price',
            data: {
                '_token': $('#csrf').val(),
                'product_id': $("#product_id").val(),
                'start': $("#start").val(),
                'end': $("#end").val()
            },
            success: function(data) {
                console.log(Object.keys(data).length);
                console.log(data);
                var cha = Object.keys(data).length;
                $('.shadow-z-1').show();
                if (cha > 0) {
                    for (var i = 0; i < data.length; i++) {

                        $('.shadow-z-1').append("<tr class='liquid-row><td>" + data[i].start + "</td><td>"+ data[i].end + "</td><td>" + data[i].end + "</td><td><a class='btn-m btn btn-m-success'>Available</a></td></tr>");
                    }
                }
                else{
                    $('#alert-message-warning').show();
                    $("#alert-message-warning").fadeTo(2000, 5000).slideUp(5000, function(){
                        $("#alert-message-warning").slideUp(5000);
                    });                 
                }
            }
        });
      });
    });

You just need to loop through your data. 您只需要遍历数据。

The variable data is the entire Json object, you need to iterate through this object and append each of the objects. 变量数据是整个Json对象,您需要遍历此对象并追加每个对象。

data.foreach(function(obj) {
    $('.shadow-z-1').append("<tr class='liquid-row><td>" + obj.start + "</td><td>"+ obj.end + "</td><td><a class='btn-m btn btn-m-success'>Available</a></td></tr>"); 
} )

This way you're iterating and appending the results. 这样,您就可以迭代并附加结果。 On a new Ajax call you may want to remove everything so you don't mix results from different calls. 在新的Ajax调用中,您可能希望删除所有内容,以免混淆来自不同调用的结果。

Hope this helps 希望这可以帮助

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

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