簡體   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