繁体   English   中英

无法追加变量,但可以控制台记录它

[英]Can't append variable but can console log it

我已经为这个问题苦苦挣扎了一段时间,但是我似乎无法弄清楚。 我正在尝试遍历JSON对象,并将每个数组的数据附加到index.php中的div上。 但是它以某种方式不起作用,但是我可以console.log数据但不附加它。

var result;
getData();

function getData() {
    $.ajax({
        type: "POST",
        url: 'api/api.php',
        data: {
            'information' : 'info'
        },
        async: false,
        success: function(data) {
            result = data;
        },
        dataType: 'HTML'
    });

    result = $.parseJSON(result);
    //console.log(result[1].naam);
}

function dumpData(){
    console.log(test);
    for(var i = 0; i <= result.length; i++) {
        console.log(result[i].naam);
        $('<tr>').append(
            $('<td>').text(result[i].id),
            $('<td>').text(result[i].naam),
            $('<td>').text(result[i].brouwer)
        ).appendTo('#test');
    }
}

console.log('Loaded data.');
dumpData();
console.log('Dumped data.');

Index.php:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="js/Database.js"></script>

<body>
    <div id="test"></div>
</body>

更新: dataType本来是JSON而不是HTML,这就是问题所在。

进行尝试操作的规范方法是不使用async:false,以在调用成功后追加并将行追加到表。

您还会使用<=循环一次

此外,您的代码还依赖结果为正确的JSON,而不是HTML

 var result = [ { "id":"0", "naam":"Thom", "brouwer":"Heineken" }, { "id":"1", "naam":"Bram", "brouwer":"Amstel" }, { "id":"2", "naam":"Aad", "brouwer":"Grolsch" } // no comma on the last ]; function dumpData(result){ console.log(result); for(var i = 0; i < result.length; i++) { $('<tr>').append( $('<td>').text(result[i].id), $('<td>').text(result[i].naam), $('<td>').text(result[i].brouwer) ).appendTo('#test'); } } console.log('Loaded data.'); dumpData(result); console.log('Dumped data.'); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <table> <tbody id="test"></tbody> </table> 

我个人将Ajax编码为

function getData() {
  $.ajax({
    type: "POST",
    url: 'api/api.php',
    data: {
        'information' : 'info'
    },
    success: function(data) {
        dumpData(data)
    },
    dataType: 'JSON'
  });
}

并有

function dumpData(data){

您可以尝试直接在循环中设置HTML以进行div测试。

$('#test').html('<tr><td>'"+ result[i].id +"'</td><td>'"+ result[i].naam +"'</td><td>'"+ result[i].brouwer +"'</td></tr>');

代替

$('<tr>').append(
   $('<td>').text(result[i].id),
   $('<td>').text(result[i].naam),
   $('<td>').text(result[i].brouwer)
).appendTo('#test');

暂无
暂无

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

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