小编典典

将JSON输出到html表

json

我在将选项卡中的JSON输出到HTML表时遇到了麻烦(这是javascript /
jQuery夜间课程分配的一部分)。请有人看看,并建议我要对表格格式的输出进行哪些修改?我收到成功警报,但表未填充。

谢谢。

// Tabs
$(function() {
    $( "#tabs" ).tabs();
});

// Spanish 
$(document).ready(function(){
    $.ajax({ 
        url:   "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php", // path to file
        dataType: 'jsonp',
        jsonp: 'callback',
        jsonpCallback: 'jsonpCallback',
        success: function () {
            alert('success');
        }               
    });
});

function drawTable(data) {
    for (var i = 0; i < data.length; i++) {
        drawRow(data[i]);
    }
}

function drawRow(rowData) {
    var row = $("<tr />")
    $("#table").append(row);
    row.append($("<td>" + rowData.course + "</td>"));
    row.append($("<td>" + rowData.name + "</td>"));
    row.append($("<td>" + rowData.price + "</td>"));
}

和HTML:

<div id="tabs">
    <ol start="50">
        <li>
            <a href="#tab-1">Italian</a>
        </li>
        <li>
            <a href="#tab-2">Spanish</a>
        </li>
    </ol>

    <p id="tab-1"></p>
    <p id="tab-2">
        <table id='table'>
            <thead>
                <tr>
                    <th>Course</th>
                    <th>Name</th>
                    <th>Price</th>
                </tr>
            </thead>
            <tbody></tbody>
        </table>
    </p>
    <p id="tab-3"></p>
</div>

阅读 372

收藏
2020-07-27

共1个答案

小编典典

代码的主要问题是,在AJAX请求成功完成后,您没有调用任何函数。您至少需要致电drawTable()才能填充数据。

但是,您可以对代码进行一些改进。首先,删除jsonp: 'callback'。这是默认值,并且在您提供时也是多余的jsonpCallback。然后,您也可以更改jsonpCallback'drawTable'。这消除了对success处理程序功能的需求,意味着所有请求数据都将直接提供给您的drawTable()功能。最后,与其在内存中创建DOM元素并在循环的每次迭代中附加值,不如使用表的所有HTML构建单个字符串并在完成时附加一次,这样要快得多。

话虽如此,请尝试以下操作:

$(document).ready(function() {

  $.ajax({

    url: "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php",

    dataType: 'jsonp',

    jsonpCallback: 'drawTable'

  });

});



function drawTable(data) {

  var html = '';

  for (var i = 0; i < data.length; i++) {

    html += '<tr><td>' + data[i].course + '</td><td>' + data[i].name + '</td><td>' + data[i].price + '</td></tr>';

  }

  $('#table tbody').append(html);

}


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



<table id="table">

  <thead>

    <tr>

      <th>Course</th>

      <th>Name</th>

      <th>Price</th>

    </tr>

  </thead>

  <tbody></tbody>

</table>

请注意,我将此处显示的HTML缩小为仅相关部分。

2020-07-27